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