//===----------------------------------------------------------------------===//
//
//                     The LLVM Compiler Infrastructure
//
// This file is dual licensed under the MIT and the University of Illinois Open
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
//

// UNSUPPORTED: c++98, c++03

//  Tuples of smart pointers; based on bug #18350
//  auto_ptr doesn't have a copy constructor that takes a const &, but tuple does.

#include <tuple>
#include <memory>

int main () {
    {
    std::tuple<std::unique_ptr<char>> up;
    std::tuple<std::shared_ptr<char>> sp;
    std::tuple<std::weak_ptr  <char>> wp;
    }
    {
    std::tuple<std::unique_ptr<char[]>> up;
    std::tuple<std::shared_ptr<char[]>> sp;
    std::tuple<std::weak_ptr  <char[]>> wp;
    }
    // Smart pointers of type 'T[N]' are not tested here since they are not
    // supported by the standard nor by libc++'s implementation.
    // See http://reviews.llvm.org/D21320 for move information.
}
//===----------------------------------------------------------------------===//
//
//                     The LLVM Compiler Infrastructure
//
// This file is dual licensed under the MIT and the University of Illinois Open
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
//

// UNSUPPORTED: c++98, c++03

//  Tuples of smart pointers; based on bug #18350
//  auto_ptr doesn't have a copy constructor that takes a const &, but tuple does.

#include <tuple>
#include <memory>

int main () {
    {
    std::tuple<std::unique_ptr<char>> up;
    std::tuple<std::shared_ptr<char>> sp;
    std::tuple<std::weak_ptr  <char>> wp;
//     std::tuple<std::auto_ptr  <char>> ap;
    }
    {
    std::tuple<std::unique_ptr<char[]>> up;
    std::tuple<std::shared_ptr<char[]>> sp;
    std::tuple<std::weak_ptr  <char[]>> wp;
//     std::tuple<std::auto_ptr  <char[]>> ap;
    }
    {
    std::tuple<std::unique_ptr<char[5]>> up;
    std::tuple<std::shared_ptr<char[5]>> sp;
    std::tuple<std::weak_ptr  <char[5]>> wp;
//     std::tuple<std::auto_ptr  <char[5]>> ap;
    }
}
--- 
+++ 
@@ -21,18 +21,13 @@
     std::tuple<std::unique_ptr<char>> up;
     std::tuple<std::shared_ptr<char>> sp;
     std::tuple<std::weak_ptr  <char>> wp;
-//     std::tuple<std::auto_ptr  <char>> ap;
     }
     {
     std::tuple<std::unique_ptr<char[]>> up;
     std::tuple<std::shared_ptr<char[]>> sp;
     std::tuple<std::weak_ptr  <char[]>> wp;
-//     std::tuple<std::auto_ptr  <char[]>> ap;
     }
-    {
-    std::tuple<std::unique_ptr<char[5]>> up;
-    std::tuple<std::shared_ptr<char[5]>> sp;
-    std::tuple<std::weak_ptr  <char[5]>> wp;
-//     std::tuple<std::auto_ptr  <char[5]>> ap;
-    }
+    // Smart pointers of type 'T[N]' are not tested here since they are not
+    // supported by the standard nor by libc++'s implementation.
+    // See http://reviews.llvm.org/D21320 for move information.
 }
Fix warning in tuple tests. The test suite should now run clean with most warnings enabled

git-svn-id: 756ef344af921d95d562d9e9f9389127a89a6314@272822 91177308-0d34-0410-b5e6-96231b3b80d8
