summaryrefslogtreecommitdiffstats
path: root/src/boost/libs/local_function/test/macro_commas_seq.cpp
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/boost/libs/local_function/test/macro_commas_seq.cpp44
1 files changed, 44 insertions, 0 deletions
diff --git a/src/boost/libs/local_function/test/macro_commas_seq.cpp b/src/boost/libs/local_function/test/macro_commas_seq.cpp
new file mode 100644
index 000000000..f2e0f49af
--- /dev/null
+++ b/src/boost/libs/local_function/test/macro_commas_seq.cpp
@@ -0,0 +1,44 @@
+
+// Copyright (C) 2009-2012 Lorenzo Caminiti
+// Distributed under the Boost Software License, Version 1.0
+// (see accompanying file LICENSE_1_0.txt or a copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+// Home at http://www.boost.org/libs/local_function
+
+#include <boost/local_function.hpp>
+#include <boost/utility/identity_type.hpp>
+#include <boost/typeof/std/string.hpp> // Type-of registrations
+#include <boost/typeof/std/map.hpp> // needed for `NAME` macro.
+#include <boost/config.hpp>
+#include <map>
+#include <string>
+
+std::string cat(const std::string& x, const std::string& y) { return x + y; }
+
+template<typename V, typename K>
+struct key_sizeof {
+ static int const value;
+};
+
+template<typename V, typename K>
+int const key_sizeof<V, K>::value = sizeof(K);
+
+typedef int sign_t;
+
+int main(void) {
+ void BOOST_LOCAL_FUNCTION(
+ (BOOST_IDENTITY_TYPE((const std::map<std::string, size_t>&)) m)
+ (BOOST_IDENTITY_TYPE((::sign_t)) sign)
+ (const size_t& factor)
+ (default (key_sizeof<std::string, size_t>::value))
+ (const std::string& separator)(default cat(":", " "))
+ ) {
+ // Do something...
+ } BOOST_LOCAL_FUNCTION_NAME(f)
+
+ std::map<std::string, size_t> m;
+ ::sign_t sign = -1;
+ f(m, sign);
+ return 0;
+}
+