mirror of
https://github.com/boostorg/variant2.git
synced 2025-07-31 20:54:28 +02:00
Fix variant_alternative for g++ 4.8
This commit is contained in:
@@ -137,10 +137,34 @@ template<std::size_t I, class... T> struct variant_alternative_impl<I, variant<T
|
|||||||
{
|
{
|
||||||
};
|
};
|
||||||
|
|
||||||
|
template<std::size_t I, class... T> struct variant_alternative_impl<I, variant<T...> const&, true>: std::add_lvalue_reference< mp11::mp_at_c<variant<T...>, I> const >
|
||||||
|
{
|
||||||
|
};
|
||||||
|
|
||||||
|
template<std::size_t I, class... T> struct variant_alternative_impl<I, variant<T...> volatile&, true>: std::add_lvalue_reference< mp11::mp_at_c<variant<T...>, I> volatile >
|
||||||
|
{
|
||||||
|
};
|
||||||
|
|
||||||
|
template<std::size_t I, class... T> struct variant_alternative_impl<I, variant<T...> const volatile&, true>: std::add_lvalue_reference< mp11::mp_at_c<variant<T...>, I> const volatile >
|
||||||
|
{
|
||||||
|
};
|
||||||
|
|
||||||
template<std::size_t I, class... T> struct variant_alternative_impl<I, variant<T...>&&, true>: std::add_rvalue_reference< mp11::mp_at_c<variant<T...>, I> >
|
template<std::size_t I, class... T> struct variant_alternative_impl<I, variant<T...>&&, true>: std::add_rvalue_reference< mp11::mp_at_c<variant<T...>, I> >
|
||||||
{
|
{
|
||||||
};
|
};
|
||||||
|
|
||||||
|
template<std::size_t I, class... T> struct variant_alternative_impl<I, variant<T...> const&&, true>: std::add_rvalue_reference< mp11::mp_at_c<variant<T...>, I> const >
|
||||||
|
{
|
||||||
|
};
|
||||||
|
|
||||||
|
template<std::size_t I, class... T> struct variant_alternative_impl<I, variant<T...> volatile&&, true>: std::add_rvalue_reference< mp11::mp_at_c<variant<T...>, I> volatile >
|
||||||
|
{
|
||||||
|
};
|
||||||
|
|
||||||
|
template<std::size_t I, class... T> struct variant_alternative_impl<I, variant<T...> const volatile&&, true>: std::add_rvalue_reference< mp11::mp_at_c<variant<T...>, I> const volatile >
|
||||||
|
{
|
||||||
|
};
|
||||||
|
|
||||||
} // namespace detail
|
} // namespace detail
|
||||||
|
|
||||||
template<std::size_t I, class T> struct variant_alternative
|
template<std::size_t I, class T> struct variant_alternative
|
||||||
@@ -167,10 +191,34 @@ template<std::size_t I, class... T> struct variant_alternative<I, variant<T...>&
|
|||||||
{
|
{
|
||||||
};
|
};
|
||||||
|
|
||||||
|
template<std::size_t I, class... T> struct variant_alternative<I, variant<T...> const&>: public detail::variant_alternative_impl<I, variant<T...> const&, (I < sizeof...(T))>
|
||||||
|
{
|
||||||
|
};
|
||||||
|
|
||||||
|
template<std::size_t I, class... T> struct variant_alternative<I, variant<T...> volatile&>: public detail::variant_alternative_impl<I, variant<T...> volatile&, (I < sizeof...(T))>
|
||||||
|
{
|
||||||
|
};
|
||||||
|
|
||||||
|
template<std::size_t I, class... T> struct variant_alternative<I, variant<T...> const volatile&>: public detail::variant_alternative_impl<I, variant<T...> const volatile&, (I < sizeof...(T))>
|
||||||
|
{
|
||||||
|
};
|
||||||
|
|
||||||
template<std::size_t I, class... T> struct variant_alternative<I, variant<T...>&&>: public detail::variant_alternative_impl<I, variant<T...>&&, (I < sizeof...(T))>
|
template<std::size_t I, class... T> struct variant_alternative<I, variant<T...>&&>: public detail::variant_alternative_impl<I, variant<T...>&&, (I < sizeof...(T))>
|
||||||
{
|
{
|
||||||
};
|
};
|
||||||
|
|
||||||
|
template<std::size_t I, class... T> struct variant_alternative<I, variant<T...> const&&>: public detail::variant_alternative_impl<I, variant<T...> const&&, (I < sizeof...(T))>
|
||||||
|
{
|
||||||
|
};
|
||||||
|
|
||||||
|
template<std::size_t I, class... T> struct variant_alternative<I, variant<T...> volatile&&>: public detail::variant_alternative_impl<I, variant<T...> volatile&&, (I < sizeof...(T))>
|
||||||
|
{
|
||||||
|
};
|
||||||
|
|
||||||
|
template<std::size_t I, class... T> struct variant_alternative<I, variant<T...> const volatile&&>: public detail::variant_alternative_impl<I, variant<T...> const volatile&&, (I < sizeof...(T))>
|
||||||
|
{
|
||||||
|
};
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
namespace detail
|
namespace detail
|
||||||
|
Reference in New Issue
Block a user