view gcc/testsuite/g++.dg/cpp0x/variadic-tuple2.C @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents 04ced10e8804
children
line wrap: on
line source

// PR c++/67164
// { dg-do compile { target c++11 } }

#include <type_traits>

namespace detail {
    template <bool ...b>
    struct fast_and
        : std::is_same<fast_and<b...>, fast_and<(b, true)...>>
    { };
}

template <typename ...Xn>
struct tuple {
    tuple() { }

    template <typename ...Yn, typename = typename std::enable_if<
        detail::fast_and<std::is_constructible<Xn, Yn&&>::value...>::value
    >::type>
    tuple(Yn&& ...yn) { }

    template <typename ...Yn, typename = typename std::enable_if<
        detail::fast_and<std::is_constructible<Xn, Yn const&>::value...>::value
    >::type>
    tuple(tuple<Yn...> const& other) { }
};

tuple<tuple<>> t{};
tuple<tuple<>> copy = t;