MPL11
All Classes Namespaces Files Typedefs Macros Groups Pages
strict_overload.hpp
Go to the documentation of this file.
1 
12 #ifndef BOOST_MPL11_DETAIL_LOGICAL_OR_STRICT_OVERLOAD_HPP
13 #define BOOST_MPL11_DETAIL_LOGICAL_OR_STRICT_OVERLOAD_HPP
14 
15 #include <boost/mpl11/bool.hpp>
17 
18 
19 namespace boost { namespace mpl11 { namespace detail { namespace logical_or {
20  template <typename ...T> false_ strict_overload_impl(T*...);
21  false_ strict_overload_impl();
22  template <typename ...T> true_ strict_overload_impl(T...);
23 
30  template <typename ...xs>
31  using strict_overload = decltype(
32  strict_overload_impl(
33  typename std_conditional<
34  (bool)xs::type::value, int, int*
35  >::type{}...
36  )
37  );
38 }}}} // end namespace boost::mpl11::detail::logical_or
39 
40 #endif // !BOOST_MPL11_DETAIL_LOGICAL_OR_STRICT_OVERLOAD_HPP
Defines boost::mpl11::detail::std_conditional.
Forwards to boost/mpl11/integer.hpp.