diff options
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.cpp | 28 |
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(); +} + |