Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: downloads/boost_1_34_1/libs/parameter/test/deduced.cpp @ 30

Last change on this file since 30 was 29, checked in by landauf, 17 years ago

updated boost from 1_33_1 to 1_34_1

File size: 2.5 KB
Line 
1// Copyright Daniel Wallin 2006. Use, modification and distribution is
2// subject to the Boost Software License, Version 1.0. (See accompanying
3// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
4
5#include <boost/parameter/parameters.hpp>
6#include <boost/parameter/name.hpp>
7#include <boost/parameter/binding.hpp>
8#include "deduced.hpp"
9
10namespace parameter = boost::parameter;
11namespace mpl = boost::mpl;
12
13BOOST_PARAMETER_NAME(x)
14BOOST_PARAMETER_NAME(y)
15BOOST_PARAMETER_NAME(z)
16
17int main()
18{
19    using namespace parameter;
20
21    check<
22        parameters<
23            tag::x
24          , tag::y
25        >
26    >(
27        (_x = 0, _y = 1)
28      , 0
29      , 1
30    );
31
32    check<
33        parameters<
34            tag::x
35          , required<deduced<tag::y>, boost::is_convertible<mpl::_, int> >
36          , optional<deduced<tag::z>, boost::is_convertible<mpl::_, char const*> >
37        >
38    >(
39        (_x = 0, _y = not_present, _z = "foo")
40      , _x = 0
41      , "foo"
42    );
43
44    check<
45        parameters<
46            tag::x
47          , required<deduced<tag::y>, boost::is_convertible<mpl::_, int> >
48          , optional<deduced<tag::z>, boost::is_convertible<mpl::_, char const*> >
49        >
50    >(
51        (_x = 0, _y = 1, _z = "foo")
52      , 0
53      , "foo"
54      , 1
55    );
56
57    check<
58        parameters<
59            tag::x
60          , required<deduced<tag::y>, boost::is_convertible<mpl::_, int> >
61          , optional<deduced<tag::z>, boost::is_convertible<mpl::_, char const*> >
62        >
63    >(
64        (_x = 0, _y = 1, _z = "foo")
65      , 0
66      , 1
67      , "foo"
68    );
69
70    check<
71        parameters<
72            tag::x
73          , required<deduced<tag::y>, boost::is_convertible<mpl::_, int> >
74          , optional<deduced<tag::z>, boost::is_convertible<mpl::_, char const*> >
75        >
76    >(
77        (_x = 0, _y = 1, _z = "foo")
78      , 0
79      , _y = 1
80      , "foo"
81    );
82
83    check<
84        parameters<
85            tag::x
86          , required<deduced<tag::y>, boost::is_convertible<mpl::_, int> >
87          , optional<deduced<tag::z>, boost::is_convertible<mpl::_, char const*> >
88        >
89    >(
90        (_x = 0, _y = 1, _z = "foo")
91      , _z = "foo"
92      , _x = 0
93      , 1
94    );
95
96    // Fails becasue of parameters.hpp:428
97/*
98    check<
99        parameters<
100            tag::x
101          , required<deduced<tag::y>, boost::is_convertible<mpl::_, int> >
102          , optional<deduced<tag::z>, boost::is_convertible<mpl::_, char const*> >
103        >
104    >(
105        (_x = 0, _y = 1, _z = "foo")
106      , _x = 0
107      , (long*)0
108      , 1
109    );
110*/
111
112    return 0;
113};
114
Note: See TracBrowser for help on using the repository browser.