summaryrefslogtreecommitdiffstats
path: root/src/boost/libs/parameter/test/literate/lazy-default-computation0.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/boost/libs/parameter/test/literate/lazy-default-computation0.cpp')
-rw-r--r--src/boost/libs/parameter/test/literate/lazy-default-computation0.cpp28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/boost/libs/parameter/test/literate/lazy-default-computation0.cpp b/src/boost/libs/parameter/test/literate/lazy-default-computation0.cpp
new file mode 100644
index 000000000..ad8a3e83e
--- /dev/null
+++ b/src/boost/libs/parameter/test/literate/lazy-default-computation0.cpp
@@ -0,0 +1,28 @@
+
+#include <boost/parameter.hpp>
+#include <string>
+
+BOOST_PARAMETER_NAME(s1)
+BOOST_PARAMETER_NAME(s2)
+BOOST_PARAMETER_NAME(s3)
+
+template <typename ArgumentPack>
+std::string f(ArgumentPack const& args)
+{
+ std::string const& s1 = args[_s1];
+ std::string const& s2 = args[_s2];
+ typename boost::parameter::binding<
+ ArgumentPack,tag::s3,std::string
+ >::type s3 = args[_s3|(s1+s2)]; // always constructs s1+s2
+ return s3;
+}
+
+#include <boost/core/lightweight_test.hpp>
+
+int main()
+{
+ std::string x = f((_s1="hello,", _s2=" world", _s3="hi world"));
+ BOOST_TEST_EQ(x, std::string("hi world"));
+ return boost::report_errors();
+}
+