diff --git a/include/boost/mp11/list.hpp b/include/boost/mp11/list.hpp index 5795d0a..8e9288f 100644 --- a/include/boost/mp11/list.hpp +++ b/include/boost/mp11/list.hpp @@ -23,7 +23,10 @@ namespace mp11 namespace detail { -template struct mp_size_impl; +template struct mp_size_impl +{ +// An error "no type named 'type'" here means that the argument to mp_size is not a list +}; template class L, class... T> struct mp_size_impl> { @@ -41,7 +44,11 @@ template using mp_empty = mp_bool< mp_size::value == 0 >; namespace detail { -template struct mp_front_impl; +template struct mp_front_impl +{ +// An error "no type named 'type'" here means that the argument to mp_front +// is either not a list, or is an empty list +}; template class L, class T1, class... T> struct mp_front_impl> { @@ -56,7 +63,11 @@ template using mp_front = typename detail::mp_front_impl::type; namespace detail { -template struct mp_pop_front_impl; +template struct mp_pop_front_impl +{ +// An error "no type named 'type'" here means that the argument to mp_pop_front +// is either not a list, or is an empty list +}; template class L, class T1, class... T> struct mp_pop_front_impl> { @@ -77,7 +88,11 @@ template using mp_rest = mp_pop_front; namespace detail { -template struct mp_second_impl; +template struct mp_second_impl +{ +// An error "no type named 'type'" here means that the argument to mp_second +// is either not a list, or has fewer than two elements +}; template class L, class T1, class T2, class... T> struct mp_second_impl> { @@ -92,7 +107,11 @@ template using mp_second = typename detail::mp_second_impl::type; namespace detail { -template struct mp_third_impl; +template struct mp_third_impl +{ +// An error "no type named 'type'" here means that the argument to mp_third +// is either not a list, or has fewer than three elements +}; template class L, class T1, class T2, class T3, class... T> struct mp_third_impl> { @@ -107,7 +126,10 @@ template using mp_third = typename detail::mp_third_impl::type; namespace detail { -template struct mp_push_front_impl; +template struct mp_push_front_impl +{ +// An error "no type named 'type'" here means that the first argument to mp_push_front is not a list +}; template class L, class... U, class... T> struct mp_push_front_impl, T...> { @@ -122,7 +144,10 @@ template using mp_push_front = typename detail::mp_push_fro namespace detail { -template struct mp_push_back_impl; +template struct mp_push_back_impl +{ +// An error "no type named 'type'" here means that the first argument to mp_push_back is not a list +}; template class L, class... U, class... T> struct mp_push_back_impl, T...> { @@ -137,7 +162,10 @@ template using mp_push_back = typename detail::mp_push_back namespace detail { -template class B> struct mp_rename_impl; +template class B> struct mp_rename_impl +{ +// An error "no type named 'type'" here means that the first argument to mp_rename is not a list +}; template class A, class... T, template class B> struct mp_rename_impl, B> { @@ -156,7 +184,11 @@ template using mp_apply_q = typename detail::mp_rename_impl struct mp_replace_front_impl; +template struct mp_replace_front_impl +{ +// An error "no type named 'type'" here means that the first argument to mp_replace_front +// is either not a list, or is an empty list +}; template class L, class U1, class... U, class T> struct mp_replace_front_impl, T> { @@ -174,7 +206,11 @@ template using mp_replace_first = typename detail::mp_replace_ namespace detail { -template struct mp_replace_second_impl; +template struct mp_replace_second_impl +{ +// An error "no type named 'type'" here means that the first argument to mp_replace_second +// is either not a list, or has fewer than two elements +}; template class L, class U1, class U2, class... U, class T> struct mp_replace_second_impl, T> { @@ -189,7 +225,11 @@ template using mp_replace_second = typename detail::mp_replace namespace detail { -template struct mp_replace_third_impl; +template struct mp_replace_third_impl +{ +// An error "no type named 'type'" here means that the first argument to mp_replace_third +// is either not a list, or has fewer than three elements +}; template class L, class U1, class U2, class U3, class... U, class T> struct mp_replace_third_impl, T> {