blob: 43c00e91d564b1231a08a4ca0427608d287bc082 [file] [log] [blame]
// 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;