diff options
Diffstat (limited to '3rdParty/Boost/src/boost/parameter/aux_/template_keyword.hpp')
-rwxr-xr-x | 3rdParty/Boost/src/boost/parameter/aux_/template_keyword.hpp | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/3rdParty/Boost/src/boost/parameter/aux_/template_keyword.hpp b/3rdParty/Boost/src/boost/parameter/aux_/template_keyword.hpp new file mode 100755 index 0000000..5a02f00 --- /dev/null +++ b/3rdParty/Boost/src/boost/parameter/aux_/template_keyword.hpp @@ -0,0 +1,47 @@ +// Copyright Daniel Wallin 2006. Use, modification and distribution is +// subject to the Boost Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_PARAMETER_TEMPLATE_KEYWORD_060203_HPP +# define BOOST_PARAMETER_TEMPLATE_KEYWORD_060203_HPP + +# include <boost/mpl/and.hpp> +# include <boost/mpl/not.hpp> +# include <boost/type_traits/is_convertible.hpp> +# include <boost/type_traits/is_reference.hpp> + +namespace boost { namespace parameter { + +namespace aux +{ + + struct template_keyword_tag {}; + + template <class T, class U> + struct is_pointer_convertible + : is_convertible<T*, U*> + {}; + + template <class T> + struct is_template_keyword + : mpl::and_< + mpl::not_<is_reference<T> > + , is_pointer_convertible<T, template_keyword_tag> + > + {}; + +} // namespace aux + +template <class Tag, class T> +struct template_keyword + : aux::template_keyword_tag +{ + typedef Tag key_type; + typedef T value_type; + typedef value_type reference; +}; + +}} // namespace boost::parameter + +#endif // BOOST_PARAMETER_TEMPLATE_KEYWORD_060203_HPP + |