]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/parameter/test/literate/deduced-parameters0.cpp
add subtree-ish sources for 12.0.3
[ceph.git] / ceph / src / boost / libs / parameter / test / literate / deduced-parameters0.cpp
1
2 #include <boost/parameter.hpp>
3
4 BOOST_PARAMETER_NAME(name)
5 BOOST_PARAMETER_NAME(func)
6 BOOST_PARAMETER_NAME(docstring)
7 BOOST_PARAMETER_NAME(keywords)
8 BOOST_PARAMETER_NAME(policies)
9
10 struct default_call_policies
11 {};
12
13 struct no_keywords
14 {};
15
16 struct keywords
17 {};
18
19 template <class T>
20 struct is_keyword_expression
21 : boost::mpl::false_
22 {};
23
24 template <>
25 struct is_keyword_expression<keywords>
26 : boost::mpl::true_
27 {};
28
29 default_call_policies some_policies;
30
31 void f()
32 {}
33 namespace mpl = boost::mpl;
34
35 BOOST_PARAMETER_FUNCTION(
36 (void), def, tag,
37
38 (required (name,(char const*)) (func,*) ) // nondeduced
39
40 (deduced
41 (optional
42 (docstring, (char const*), "")
43
44 (keywords
45 , *(is_keyword_expression<mpl::_>) // see 5
46 , no_keywords())
47
48 (policies
49 , *(mpl::not_<
50 mpl::or_<
51 boost::is_convertible<mpl::_, char const*>
52 , is_keyword_expression<mpl::_> // see 5
53 >
54 >)
55 , default_call_policies()
56 )
57 )
58 )
59 )
60 {
61
62 }
63
64
65 int main()
66 {
67 def("f", &f, some_policies, "Documentation for f");
68 def("f", &f, "Documentation for f", some_policies);
69
70 def(
71 "f", &f
72 , _policies = some_policies, "Documentation for f");
73 }
74