12#include <boost/type_traits/add_pointer.hpp>
13#include <boost/type_traits/add_reference.hpp>
15#include <boost/type_traits/is_same.hpp>
60template <
typename C,
typename X,
typename Y>
79template <
typename C,
typename X,
typename Y,
bool Same>
86template <
typename C,
typename X,
typename Y>
90 typename boost::add_pointer<
95 boost::is_same<C, X>::value
102template <
typename C,
typename X,
typename Y>
106 typename boost::add_reference<
111 boost::is_same<C, X>::value
118template <
typename C,
typename X,
typename Y,
size_t N>
126 boost::is_same<C, X>::value
134template <
typename Cr,
typename X,
typename Y>
142 boost::is_same<Cr, X>::value
147template <
typename Cr,
typename C0,
typename X,
typename Y>
155 boost::is_same<Cr, X>::value
162 boost::is_same<C0, X>::value
167template <
typename Cr,
typename C0,
typename C1,
typename X,
typename Y>
175 boost::is_same<Cr, X>::value
182 boost::is_same<C0, X>::value
188 boost::is_same<C1, X>::value
194template <
typename C,
typename X,
typename Y>
200template <
typename C,
typename X,
typename Y>
Encapsulate solution for Exercise 2-1.
boost::add_pointer< typenamereplace_type_dispatch< C, X, Y, boost::is_same< C, X >::value >::type >::type type
boost::add_reference< typenamereplace_type_dispatch< C, X, Y, boost::is_same< C, X >::value >::type >::type type
replace_type< C, X, Y >::type type
Internal type used by replace_type.
Given an arbitrary compound type, replace nested types.