Home | History | Annotate | Download | only in pairs.pair
      1 //===----------------------------------------------------------------------===//
      2 //
      3 //                     The LLVM Compiler Infrastructure
      4 //
      5 // This file is dual licensed under the MIT and the University of Illinois Open
      6 // Source Licenses. See LICENSE.TXT for details.
      7 //
      8 //===----------------------------------------------------------------------===//
      9 
     10 // UNSUPPORTED: c++98, c++03
     11 
     12 // <utility>
     13 
     14 // template <class T1, class T2> struct pair
     15 
     16 // template <class... Args1, class... Args2>
     17 //     pair(piecewise_construct_t, tuple<Args1...> first_args,
     18 //                                 tuple<Args2...> second_args);
     19 
     20 #include <tuple>
     21 #include <type_traits>
     22 #include <utility>
     23 
     24 #include "archetypes.hpp"
     25 
     26 
     27 int main() {
     28     using NonThrowingConvert = NonThrowingTypes::ConvertingType;
     29     using ThrowingConvert = NonTrivialTypes::ConvertingType;
     30     static_assert(!std::is_nothrow_constructible<std::pair<ThrowingConvert, ThrowingConvert>,
     31                                                  std::piecewise_construct_t, std::tuple<int, int>, std::tuple<long, long>>::value, "");
     32     static_assert(!std::is_nothrow_constructible<std::pair<NonThrowingConvert, ThrowingConvert>,
     33                                                  std::piecewise_construct_t, std::tuple<int, int>, std::tuple<long, long>>::value, "");
     34     static_assert(!std::is_nothrow_constructible<std::pair<ThrowingConvert, NonThrowingConvert>,
     35                                                  std::piecewise_construct_t, std::tuple<int, int>, std::tuple<long, long>>::value, "");
     36     static_assert( std::is_nothrow_constructible<std::pair<NonThrowingConvert, NonThrowingConvert>,
     37                                                  std::piecewise_construct_t, std::tuple<int, int>, std::tuple<long, long>>::value, "");
     38 }
     39