File indexing completed on 2025-01-18 09:38:49
0001
0002
0003
0004
0005
0006
0007
0008 #ifndef BOOST_IOSTREAMS_DETAIL_DISPATCH_HPP_INCLUDED
0009 #define BOOST_IOSTREAMS_DETAIL_DISPATCH_HPP_INCLUDED
0010
0011 #if defined(_MSC_VER)
0012 # pragma once
0013 #endif
0014
0015 #include <boost/config.hpp> // BOOST_DEDUCED_TYPENAME.
0016 #include <boost/iostreams/detail/select.hpp>
0017 #include <boost/iostreams/traits.hpp> // category_of.
0018 #include <boost/mpl/void.hpp>
0019 #include <boost/type_traits/is_convertible.hpp>
0020
0021 namespace boost { namespace iostreams {namespace detail {
0022
0023 template< typename T, typename Tag1, typename Tag2,
0024 typename Tag3 = mpl::void_, typename Tag4 = mpl::void_,
0025 typename Tag5 = mpl::void_, typename Tag6 = mpl::void_,
0026 typename Category =
0027 BOOST_DEDUCED_TYPENAME category_of<T>::type >
0028 struct dispatch
0029 : iostreams::select<
0030 is_convertible<Category, Tag1>, Tag1,
0031 is_convertible<Category, Tag2>, Tag2,
0032 is_convertible<Category, Tag3>, Tag3,
0033 is_convertible<Category, Tag4>, Tag4,
0034 is_convertible<Category, Tag5>, Tag5,
0035 is_convertible<Category, Tag6>, Tag6
0036 >
0037 { };
0038
0039 } } }
0040
0041 #endif