diff --git a/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.apply/apply.pass.cpp b/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.apply/apply.pass.cpp index 8fd86b40f5..47f724f9c2 100644 --- a/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.apply/apply.pass.cpp +++ b/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.apply/apply.pass.cpp @@ -6,7 +6,7 @@ // //===----------------------------------------------------------------------===// -// XFAIL: gcc-8 && c++17 + // UNSUPPORTED: c++98, c++03, c++11, c++14, msvc diff --git a/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.apply/apply_extended_types.pass.cpp b/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.apply/apply_extended_types.pass.cpp index 52f1e6da8a..432a2f8241 100644 --- a/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.apply/apply_extended_types.pass.cpp +++ b/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.apply/apply_extended_types.pass.cpp @@ -6,7 +6,7 @@ // //===----------------------------------------------------------------------===// -// XFAIL: gcc-8 && c++17 + // UNSUPPORTED: c++98, c++03, c++11, c++14, msvc diff --git a/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.assign/convert_copy.pass.cpp b/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.assign/convert_copy.pass.cpp index 4e3db284b7..c70f61eaa0 100644 --- a/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.assign/convert_copy.pass.cpp +++ b/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.assign/convert_copy.pass.cpp @@ -6,7 +6,7 @@ // //===----------------------------------------------------------------------===// -// XFAIL: gcc-8 && c++17 + // diff --git a/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.assign/convert_move.pass.cpp b/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.assign/convert_move.pass.cpp index ee7991c07e..10656e96d5 100644 --- a/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.assign/convert_move.pass.cpp +++ b/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.assign/convert_move.pass.cpp @@ -6,7 +6,7 @@ // //===----------------------------------------------------------------------===// -// XFAIL: gcc-8 && c++17 + // diff --git a/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.assign/copy.pass.cpp b/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.assign/copy.pass.cpp index 86b9fe45ab..209911acd1 100644 --- a/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.assign/copy.pass.cpp +++ b/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.assign/copy.pass.cpp @@ -6,7 +6,7 @@ // //===----------------------------------------------------------------------===// -// XFAIL: gcc-8 && c++17 + // diff --git a/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.assign/move.pass.cpp b/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.assign/move.pass.cpp index 4df25d7dfd..95f68d47f8 100644 --- a/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.assign/move.pass.cpp +++ b/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.assign/move.pass.cpp @@ -6,7 +6,7 @@ // //===----------------------------------------------------------------------===// -// XFAIL: gcc-8 && c++17 + // diff --git a/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/PR20855_tuple_ref_binding_diagnostics.pass.cpp b/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/PR20855_tuple_ref_binding_diagnostics.pass.cpp index 0323826eee..37aff4e0c7 100644 --- a/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/PR20855_tuple_ref_binding_diagnostics.pass.cpp +++ b/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/PR20855_tuple_ref_binding_diagnostics.pass.cpp @@ -7,7 +7,7 @@ // //===----------------------------------------------------------------------===// -// XFAIL: gcc-8 && c++17 + // UNSUPPORTED: c++98, c++03, msvc diff --git a/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/PR22806_constrain_tuple_like_ctor.pass.cpp b/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/PR22806_constrain_tuple_like_ctor.pass.cpp index 6d85b43a3e..2eb721cff0 100644 --- a/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/PR22806_constrain_tuple_like_ctor.pass.cpp +++ b/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/PR22806_constrain_tuple_like_ctor.pass.cpp @@ -6,7 +6,7 @@ // //===----------------------------------------------------------------------===// -// XFAIL: gcc-8 && c++17 + // UNSUPPORTED: c++98, c++03, msvc diff --git a/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/PR23256_constrain_UTypes_ctor.pass.cpp b/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/PR23256_constrain_UTypes_ctor.pass.cpp index fbb1b7e5a7..2d53d9577f 100644 --- a/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/PR23256_constrain_UTypes_ctor.pass.cpp +++ b/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/PR23256_constrain_UTypes_ctor.pass.cpp @@ -6,7 +6,7 @@ // //===----------------------------------------------------------------------===// -// XFAIL: gcc-8 && c++17 + // UNSUPPORTED: c++98, c++03, msvc diff --git a/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/PR27684_contains_ref_to_incomplete_type.pass.cpp b/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/PR27684_contains_ref_to_incomplete_type.pass.cpp index 57f1351ad7..5559310f81 100644 --- a/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/PR27684_contains_ref_to_incomplete_type.pass.cpp +++ b/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/PR27684_contains_ref_to_incomplete_type.pass.cpp @@ -6,7 +6,7 @@ // //===----------------------------------------------------------------------===// -// XFAIL: gcc-8 && c++17 + // UNSUPPORTED: c++98, c++03, msvc diff --git a/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/UTypes.pass.cpp b/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/UTypes.pass.cpp index 98986f6b8e..f824a4316f 100644 --- a/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/UTypes.pass.cpp +++ b/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/UTypes.pass.cpp @@ -13,7 +13,7 @@ // template // explicit tuple(UTypes&&... u); -// XFAIL: gcc-4.8, gcc-4.9, gcc-8 && c++17 +// XFAIL: gcc-4.8, gcc-4.9 // UNSUPPORTED: c++98, c++03, msvc diff --git a/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/const_Types.pass.cpp b/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/const_Types.pass.cpp index 2d4732de4c..058d5d9fdc 100644 --- a/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/const_Types.pass.cpp +++ b/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/const_Types.pass.cpp @@ -6,7 +6,7 @@ // //===----------------------------------------------------------------------===// -// XFAIL: gcc-8 && c++17 + // diff --git a/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/convert_copy.pass.cpp b/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/convert_copy.pass.cpp index d33e4c9010..0b456a8ad8 100644 --- a/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/convert_copy.pass.cpp +++ b/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/convert_copy.pass.cpp @@ -12,7 +12,7 @@ // template tuple(const tuple& u); -// XFAIL: gcc-4.8, gcc-4.9, gcc-8 && c++17 +// XFAIL: gcc-4.8, gcc-4.9 // UNSUPPORTED: c++98, c++03, msvc diff --git a/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/convert_move.pass.cpp b/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/convert_move.pass.cpp index 80ea172551..090be88b20 100644 --- a/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/convert_move.pass.cpp +++ b/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/convert_move.pass.cpp @@ -6,7 +6,7 @@ // //===----------------------------------------------------------------------===// -// XFAIL: gcc-8 && c++17 + // diff --git a/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/default.pass.cpp b/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/default.pass.cpp index 6e39881d03..4a634b6f40 100644 --- a/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/default.pass.cpp +++ b/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/default.pass.cpp @@ -6,7 +6,7 @@ // //===----------------------------------------------------------------------===// -// XFAIL: gcc-8 && c++17 + // diff --git a/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/nothrow_cnstr.pass.cpp b/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/nothrow_cnstr.pass.cpp new file mode 100644 index 0000000000..4efd135832 --- /dev/null +++ b/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/nothrow_cnstr.pass.cpp @@ -0,0 +1,49 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +// + +// template class tuple; + +// tuple(tuple&& u); + +// UNSUPPORTED: c++98, c++03, msvc + +// XFAIL: gcc-8 && c++17 + +#include +#include +#include + +#include "test_macros.h" +#include "MoveOnly.h" + +template +__host__ __device__ +constexpr bool unused(T &&) {return true;} + +struct NothrowConstruct +{ + __host__ __device__ constexpr NothrowConstruct(int) noexcept {}; +}; + + +int main(int, char**) +{ + { + typedef cuda::std::tuple T; + T t(0, 1); + unused(t); // Prevent unused warning + + // Test that tuple<> handles noexcept properly + static_assert(cuda::std::is_nothrow_constructible(), ""); + static_assert(cuda::std::is_nothrow_constructible(), ""); + } + + return 0; +} diff --git a/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.creation/forward_as_tuple.pass.cpp b/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.creation/forward_as_tuple.pass.cpp index 520d1f535f..4a6ffe2f7e 100644 --- a/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.creation/forward_as_tuple.pass.cpp +++ b/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.creation/forward_as_tuple.pass.cpp @@ -6,7 +6,7 @@ // //===----------------------------------------------------------------------===// -// XFAIL: gcc-8 && c++17 + // diff --git a/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.creation/make_tuple.pass.cpp b/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.creation/make_tuple.pass.cpp index a15df09da4..50ba928c13 100644 --- a/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.creation/make_tuple.pass.cpp +++ b/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.creation/make_tuple.pass.cpp @@ -6,7 +6,7 @@ // //===----------------------------------------------------------------------===// -// XFAIL: gcc-8 && c++17 + // diff --git a/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.creation/tie.pass.cpp b/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.creation/tie.pass.cpp index 76e2068492..b687b5150e 100644 --- a/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.creation/tie.pass.cpp +++ b/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.creation/tie.pass.cpp @@ -6,7 +6,7 @@ // //===----------------------------------------------------------------------===// -// XFAIL: gcc-8 && c++17 + // diff --git a/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.creation/tuple_cat.pass.cpp b/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.creation/tuple_cat.pass.cpp index b49118af0f..9f7b587d63 100644 --- a/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.creation/tuple_cat.pass.cpp +++ b/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.creation/tuple_cat.pass.cpp @@ -6,7 +6,7 @@ // //===----------------------------------------------------------------------===// -// XFAIL: gcc-8 && c++17 + // diff --git a/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.elem/get_const.pass.cpp b/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.elem/get_const.pass.cpp index 26c75ba092..f70f31e2ed 100644 --- a/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.elem/get_const.pass.cpp +++ b/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.elem/get_const.pass.cpp @@ -6,7 +6,7 @@ // //===----------------------------------------------------------------------===// -// XFAIL: gcc-8 && c++17 + // diff --git a/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.elem/get_const_rv.pass.cpp b/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.elem/get_const_rv.pass.cpp index b07da7050b..52868494f2 100644 --- a/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.elem/get_const_rv.pass.cpp +++ b/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.elem/get_const_rv.pass.cpp @@ -6,7 +6,7 @@ // //===----------------------------------------------------------------------===// -// XFAIL: gcc-8 && c++17 + // diff --git a/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.elem/tuple.by.type.pass.cpp b/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.elem/tuple.by.type.pass.cpp index b9215f08cc..83870e1f4e 100644 --- a/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.elem/tuple.by.type.pass.cpp +++ b/.upstream-tests/test/std/utilities/tuple/tuple.tuple/tuple.elem/tuple.by.type.pass.cpp @@ -6,7 +6,7 @@ // //===----------------------------------------------------------------------===// -// XFAIL: gcc-8 && c++17 + // UNSUPPORTED: c++98, c++03, c++11, msvc