...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
Alias for T::lowest_layer_type
if it exists, else T
Defined in header <boost/beast/core/type_traits.hpp>
template< class T> struct get_lowest_layer
This will be a type alias for T::lowest_layer_type
if it exists, else it will be an alias for T
.
Declaring a wrapper:
template<class Stream> struct stream_wrapper { using next_layer_type = typename std::remove_reference<Stream>::type; using lowest_layer_type = get_lowest_layer<stream_type>; };
Defining a metafunction:
template<class T> using is_stream_wrapper : std::integral_constant<bool, ! std::is_same<T, get_lowest_layer<T>>::value> {};
Convenience header <boost/beast/core.hpp>