1*dc71a77dSLouis Dionne //===----------------------------------------------------------------------===// 2*dc71a77dSLouis Dionne // 3*dc71a77dSLouis Dionne // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4*dc71a77dSLouis Dionne // See https://llvm.org/LICENSE.txt for license information. 5*dc71a77dSLouis Dionne // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6*dc71a77dSLouis Dionne // 7*dc71a77dSLouis Dionne //===----------------------------------------------------------------------===// 8*dc71a77dSLouis Dionne 9*dc71a77dSLouis Dionne // <tuple> 10*dc71a77dSLouis Dionne 11*dc71a77dSLouis Dionne // template <class... Types> class tuple; 12*dc71a77dSLouis Dionne 13*dc71a77dSLouis Dionne // template <class Alloc, class ...UTypes> 14*dc71a77dSLouis Dionne // tuple(allocator_arg_t, const Alloc& a, tuple<UTypes...> const&); 15*dc71a77dSLouis Dionne 16*dc71a77dSLouis Dionne // UNSUPPORTED: c++03 17*dc71a77dSLouis Dionne 18*dc71a77dSLouis Dionne #include <tuple> 19*dc71a77dSLouis Dionne #include <memory> 20*dc71a77dSLouis Dionne 21*dc71a77dSLouis Dionne struct ExplicitCopy { ExplicitCopyExplicitCopy22*dc71a77dSLouis Dionne explicit ExplicitCopy(int) {} ExplicitCopyExplicitCopy23*dc71a77dSLouis Dionne explicit ExplicitCopy(ExplicitCopy const&) {} 24*dc71a77dSLouis Dionne 25*dc71a77dSLouis Dionne }; 26*dc71a77dSLouis Dionne const_explicit_copy_test()27*dc71a77dSLouis Dionnestd::tuple<ExplicitCopy> const_explicit_copy_test() { 28*dc71a77dSLouis Dionne const std::tuple<int> t1(42); 29*dc71a77dSLouis Dionne return {std::allocator_arg, std::allocator<int>{}, t1}; 30*dc71a77dSLouis Dionne // expected-error@-1 {{chosen constructor is explicit in copy-initialization}} 31*dc71a77dSLouis Dionne } 32*dc71a77dSLouis Dionne non_const_explicit_copy_test()33*dc71a77dSLouis Dionnestd::tuple<ExplicitCopy> non_const_explicit_copy_test() { 34*dc71a77dSLouis Dionne std::tuple<int> t1(42); 35*dc71a77dSLouis Dionne return {std::allocator_arg, std::allocator<int>{}, t1}; 36*dc71a77dSLouis Dionne // expected-error@-1 {{chosen constructor is explicit in copy-initialization}} 37*dc71a77dSLouis Dionne } 38