/usr/include/boost/proto/detail
NameSizeModeActions
preprocessed/-0755rm
and_n.hpp36700644editdlrm
any.hpp31250644editdlrm
args.hpp30890644editdlrm
as_expr.hpp63700644editdlrm
as_lvalue.hpp10370644editdlrm
basic_expr.hpp72780644editdlrm
class_member_traits.hpp17990644editdlrm
decltype.hpp166190644editdlrm
deduce_domain.hpp68290644editdlrm
deduce_domain_n.hpp23690644editdlrm
deep_copy.hpp30630644editdlrm
deprecated.hpp157370644editdlrm
dont_care.hpp8500644editdlrm
expr.hpp159730644editdlrm
expr_funop.hpp16040644editdlrm
extends_funop.hpp17690644editdlrm
extends_funop_const.hpp16020644editdlrm
funop.hpp33480644editdlrm
generate_by_value.hpp29480644editdlrm
ignore_unused.hpp9070644editdlrm
is_noncopyable.hpp19480644editdlrm
lambda_matches.hpp23150644editdlrm
local.hpp15360644editdlrm
make_expr.hpp23300644editdlrm
make_expr_.hpp36820644editdlrm
make_expr_funop.hpp21090644editdlrm
matches_.hpp41070644editdlrm
memfun_funop.hpp15710644editdlrm
or_n.hpp19430644editdlrm
poly_function.hpp69250644editdlrm
poly_function_funop.hpp25590644editdlrm
poly_function_traits.hpp28180644editdlrm
remove_typename.hpp47930644editdlrm
static_const.hpp7620644editdlrm
template_arity.hpp22910644editdlrm
template_arity_helper.hpp16010644editdlrm
traits.hpp90630644editdlrm
unpack_expr_.hpp79320644editdlrm
vararg_matches_impl.hpp22140644editdlrm
Edit: /usr/include/boost/proto/detail/deduce_domain.hpp (6829B)
/////////////////////////////////////////////////////////////////////////////// /// \file deduce_domain.hpp /// Contains definition of deduce_domain\<\> class templates /// for finding the domain that is common among the specified /// domains // // Copyright 2010 Daniel Wallin, Eric Niebler. Distributed under 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) // // Many thanks to Daniel Wallin who first implemented this code. Thanks // also to Jeremiah Willcock, John Bytheway and Krishna Achuthan who // offered alternate solutions to this tricky programming problem. #ifndef BOOST_PROTO_DEDUCE_DOMAIN_HPP_EAN_05_22_2010 #define BOOST_PROTO_DEDUCE_DOMAIN_HPP_EAN_05_22_2010 #include #include #include #include #include #include #include #include #include #include #include #include #ifndef BOOST_PROTO_ASSERT_VALID_DOMAIN # define BOOST_PROTO_ASSERT_VALID_DOMAIN(DOM) BOOST_MPL_ASSERT_NOT((boost::is_same)) #endif namespace boost { namespace proto { namespace detail { template struct domain_ : domain_ { typedef Domain type; typedef domain_ base; #ifdef BOOST_NO_CXX11_DECLTYPE using base::deduce98; static int const index = base::index + 1; static typename sized_type::type deduce98(domain_*); #else using base::deduce0x; static Domain deduce0x(domain_*); #endif }; template<> struct domain_ { typedef not_a_domain type; #ifdef BOOST_NO_CXX11_DECLTYPE static int const index = 1; static sized_type<1>::type deduce98(void*); #else static not_a_domain deduce0x(void*); #endif }; template<> struct domain_ : domain_ {}; template<> struct domain_ : domain_ {}; sized_type<1>::type default_test(void*, void*); sized_type<2>::type default_test(domain_*, void*); sized_type<2>::type default_test(domain_*, void*); sized_type<3>::type default_test(void*, domain_*); sized_type<3>::type default_test(void*, domain_*); sized_type<4>::type default_test(domain_*, domain_*); sized_type<4>::type default_test(domain_*, domain_*); sized_type<4>::type default_test(domain_*, domain_*); sized_type<4>::type default_test(domain_*, domain_*); #ifdef BOOST_NO_CXX11_DECLTYPE template struct nth_domain : nth_domain {}; template struct nth_domain<0, Domain> : Domain {}; #endif template struct common_domain1 { typedef D0 type; }; template struct deduce_domain1 : domain_of {}; template< typename D0 , typename D1 , int DefaultCase = sizeof(proto::detail::default_test((domain_*)0, (domain_*)0)) > struct common_domain2 { #ifdef BOOST_NO_CXX11_DECLTYPE static int const index = domain_::index - sizeof(domain_::deduce98((domain_*)0)); typedef typename nth_domain >::type type; #else typedef decltype(domain_::deduce0x((domain_*)0)) type; #endif }; template struct common_domain2 { typedef D1 type; }; template struct common_domain2 { typedef D0 type; }; template struct common_domain2 { typedef D0 type; }; template struct common_domain2 { typedef D0 type; }; template struct common_domain2 { typedef D1 type; }; template struct common_domain2 { typedef D1 type; }; template<> struct common_domain2 { typedef default_domain type; }; template<> struct common_domain2 { typedef default_domain type; }; template<> struct common_domain2 { typedef default_domain type; }; template<> struct common_domain2 { typedef basic_default_domain type; }; template struct deduce_domain2 : common_domain2< typename domain_of::type , typename domain_of::type > {}; #include } } } #endif // BOOST_PROTO_DEDUCE_DOMAIN_HPP_EAN_05_22_2010