475efb9e4acc5607e11f1a73ee4f17f832176b61
[senf.git] / boost / parameter / aux_ / tag.hpp
1 // Copyright David Abrahams 2005. Distributed under the Boost
2 // 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 #ifndef BOOST_PARAMETER_AUX_TAG_DWA2005610_HPP
5 # define BOOST_PARAMETER_AUX_TAG_DWA2005610_HPP
6
7 # include <boost/parameter/aux_/unwrap_cv_reference.hpp>
8 # include <boost/parameter/aux_/tagged_argument.hpp>
9
10 namespace boost { namespace parameter { namespace aux { 
11
12 template <class Keyword, class ActualArg
13 #if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
14         , class = typename is_cv_reference_wrapper<ActualArg>::type
15 #endif 
16           >
17 struct tag
18 {
19     typedef tagged_argument<
20         Keyword
21       , typename unwrap_cv_reference<ActualArg>::type
22     > type;
23 };
24
25 #if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
26 template <class Keyword, class ActualArg>
27 struct tag<Keyword,ActualArg,mpl::false_>
28 {
29     typedef tagged_argument<
30         Keyword
31       , ActualArg
32     > type;
33 };
34 #endif 
35
36 }}} // namespace boost::parameter::aux_
37
38 #endif // BOOST_PARAMETER_AUX_TAG_DWA2005610_HPP