1//===----------------------------------------------------------------------===//
2//
3//                     The LLVM Compiler Infrastructure
4//
5// This file is dual licensed under the MIT and the University of Illinois Open
6// Source Licenses. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10// UNSUPPORTED: c++98, c++03
11
12// <tuple>
13
14// template <class... Types> class tuple;
15
16// template <class Tuple, __tuple_assignable<Tuple, tuple> >
17//   tuple & operator=(Tuple &&);
18
19// This test checks that we do not evaluate __make_tuple_types
20// on the array when it doesn't match the size of the tuple.
21
22#include <array>
23#include <tuple>
24
25// Use 1256 to try and blow the template instantiation depth for all compilers.
26typedef std::array<char, 1256> array_t;
27typedef std::tuple<array_t> tuple_t;
28
29int main()
30{
31    array_t arr;
32    tuple_t tup;
33    tup = arr;
34}
35