1// PR c++/67164
2// { dg-do compile { target c++11 } }
3
4#include <type_traits>
5
6namespace detail {
7    template <bool ...b>
8    struct fast_and
9        : std::is_same<fast_and<b...>, fast_and<(b, true)...>>
10    { };
11}
12
13template <typename ...Xn>
14struct tuple {
15    tuple() { }
16
17    template <typename ...Yn, typename = typename std::enable_if<
18        detail::fast_and<std::is_constructible<Xn, Yn&&>::value...>::value
19    >::type>
20    tuple(Yn&& ...yn) { }
21
22    template <typename ...Yn, typename = typename std::enable_if<
23        detail::fast_and<std::is_constructible<Xn, Yn const&>::value...>::value
24    >::type>
25    tuple(tuple<Yn...> const& other) { }
26};
27
28tuple<tuple<>> t{};
29tuple<tuple<>> copy = t;
30