15f64a2b3c349920f44394ea7d19f59fe856775deMarshall Clow//===----------------------------------------------------------------------===// 25f64a2b3c349920f44394ea7d19f59fe856775deMarshall Clow// 35f64a2b3c349920f44394ea7d19f59fe856775deMarshall Clow// The LLVM Compiler Infrastructure 45f64a2b3c349920f44394ea7d19f59fe856775deMarshall Clow// 55f64a2b3c349920f44394ea7d19f59fe856775deMarshall Clow// This file is dual licensed under the MIT and the University of Illinois Open 65f64a2b3c349920f44394ea7d19f59fe856775deMarshall Clow// Source Licenses. See LICENSE.TXT for details. 75f64a2b3c349920f44394ea7d19f59fe856775deMarshall Clow// 85f64a2b3c349920f44394ea7d19f59fe856775deMarshall Clow//===----------------------------------------------------------------------===// 95f64a2b3c349920f44394ea7d19f59fe856775deMarshall Clow// 10f063052fe1d3c7a40de69795228a6334f956b9f9Eric Fiselier 11f063052fe1d3c7a40de69795228a6334f956b9f9Eric Fiselier// UNSUPPORTED: c++98, c++03 12f063052fe1d3c7a40de69795228a6334f956b9f9Eric Fiselier 135f64a2b3c349920f44394ea7d19f59fe856775deMarshall Clow// Tuples of smart pointers; based on bug #18350 145f64a2b3c349920f44394ea7d19f59fe856775deMarshall Clow// auto_ptr doesn't have a copy constructor that takes a const &, but tuple does. 155f64a2b3c349920f44394ea7d19f59fe856775deMarshall Clow 165f64a2b3c349920f44394ea7d19f59fe856775deMarshall Clow#include <tuple> 175f64a2b3c349920f44394ea7d19f59fe856775deMarshall Clow#include <memory> 185f64a2b3c349920f44394ea7d19f59fe856775deMarshall Clow 195f64a2b3c349920f44394ea7d19f59fe856775deMarshall Clowint main () { 205f64a2b3c349920f44394ea7d19f59fe856775deMarshall Clow { 215f64a2b3c349920f44394ea7d19f59fe856775deMarshall Clow std::tuple<std::unique_ptr<char>> up; 225f64a2b3c349920f44394ea7d19f59fe856775deMarshall Clow std::tuple<std::shared_ptr<char>> sp; 235f64a2b3c349920f44394ea7d19f59fe856775deMarshall Clow std::tuple<std::weak_ptr <char>> wp; 245f64a2b3c349920f44394ea7d19f59fe856775deMarshall Clow } 255f64a2b3c349920f44394ea7d19f59fe856775deMarshall Clow { 265f64a2b3c349920f44394ea7d19f59fe856775deMarshall Clow std::tuple<std::unique_ptr<char[]>> up; 275f64a2b3c349920f44394ea7d19f59fe856775deMarshall Clow std::tuple<std::shared_ptr<char[]>> sp; 285f64a2b3c349920f44394ea7d19f59fe856775deMarshall Clow std::tuple<std::weak_ptr <char[]>> wp; 295f64a2b3c349920f44394ea7d19f59fe856775deMarshall Clow } 30461797d21a2b26c4d55e623c51818f399574774cEric Fiselier // Smart pointers of type 'T[N]' are not tested here since they are not 31461797d21a2b26c4d55e623c51818f399574774cEric Fiselier // supported by the standard nor by libc++'s implementation. 3203dacbe87a17b4b88d5e050027a18c3846c60bebEric Fiselier // See http://reviews.llvm.org/D21320 for more information. 3303dacbe87a17b4b88d5e050027a18c3846c60bebEric Fiselier} 34