19795699aSEric Fiselier //===----------------------------------------------------------------------===// 29795699aSEric Fiselier // 357b08b09SChandler Carruth // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 457b08b09SChandler Carruth // See https://llvm.org/LICENSE.txt for license information. 557b08b09SChandler Carruth // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 69795699aSEric Fiselier // 79795699aSEric Fiselier //===----------------------------------------------------------------------===// 89795699aSEric Fiselier 99795699aSEric Fiselier // <tuple> 109795699aSEric Fiselier 119795699aSEric Fiselier // template <class... Types> class tuple; 129795699aSEric Fiselier 139795699aSEric Fiselier // template <class Alloc, class ...UTypes> 149795699aSEric Fiselier // tuple(allocator_arg_t, const Alloc& a, tuple<UTypes...>&&); 159795699aSEric Fiselier 16*31cbe0f2SLouis Dionne // UNSUPPORTED: c++03 179795699aSEric Fiselier 189795699aSEric Fiselier #include <tuple> 199795699aSEric Fiselier #include <memory> 209795699aSEric Fiselier 219795699aSEric Fiselier struct ExplicitCopy { ExplicitCopyExplicitCopy229795699aSEric Fiselier explicit ExplicitCopy(int) {} ExplicitCopyExplicitCopy239795699aSEric Fiselier explicit ExplicitCopy(ExplicitCopy const&) {} 249795699aSEric Fiselier }; 259795699aSEric Fiselier explicit_move_test()269795699aSEric Fiselierstd::tuple<ExplicitCopy> explicit_move_test() { 279795699aSEric Fiselier std::tuple<int> t1(42); 285b1e5b43SMichael Park return {std::allocator_arg, std::allocator<int>{}, std::move(t1)}; 299795699aSEric Fiselier // expected-error@-1 {{chosen constructor is explicit in copy-initialization}} 309795699aSEric Fiselier } 319795699aSEric Fiselier main(int,char **)322df59c50SJF Bastienint main(int, char**) 339795699aSEric Fiselier { 349795699aSEric Fiselier 352df59c50SJF Bastien 362df59c50SJF Bastien return 0; 379795699aSEric Fiselier } 38