1*a3ab5120SLouis Dionne //===----------------------------------------------------------------------===// 2*a3ab5120SLouis Dionne // 3*a3ab5120SLouis Dionne // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4*a3ab5120SLouis Dionne // See https://llvm.org/LICENSE.txt for license information. 5*a3ab5120SLouis Dionne // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6*a3ab5120SLouis Dionne // 7*a3ab5120SLouis Dionne //===----------------------------------------------------------------------===// 8*a3ab5120SLouis Dionne 9*a3ab5120SLouis Dionne // This test makes sure that we don't evaluate `is_default_constructible<T>` 10*a3ab5120SLouis Dionne // too early in std::tuple's default constructor. 11*a3ab5120SLouis Dionne 12*a3ab5120SLouis Dionne // UNSUPPORTED: c++03 13*a3ab5120SLouis Dionne 14*a3ab5120SLouis Dionne #include <tuple> 15*a3ab5120SLouis Dionne 16*a3ab5120SLouis Dionne #include "test_macros.h" 17*a3ab5120SLouis Dionne 18*a3ab5120SLouis Dionne struct Outer { 19*a3ab5120SLouis Dionne template <class T> 20*a3ab5120SLouis Dionne struct Inner { 21*a3ab5120SLouis Dionne bool foo = false; 22*a3ab5120SLouis Dionne }; 23*a3ab5120SLouis Dionne std::tuple<Inner<int>> tup; 24*a3ab5120SLouis Dionne }; 25*a3ab5120SLouis Dionne 26*a3ab5120SLouis Dionne Outer x; // expected-no-diagnostics 27