From 1c0757acd13533851ae794f2c24d12a7f01d06ba Mon Sep 17 00:00:00 2001 From: Roger Ferrer Ibanez Date: Mon, 31 Oct 2016 14:14:13 +0000 Subject: [PATCH] Fix archetypes.hpp under libcpp-no-extensions and std level < 14 Under -fno-exceptions TEST_THROW becomes abort / __builtin_abort which returns void. This causes a type mismatch in the conditional operator when testing the library in C++98,03,11 modes. Use a comma operator to workaround this problem. Differential Revision: https://reviews.llvm.org/D26147 git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@285572 91177308-0d34-0410-b5e6-96231b3b80d8 --- test/support/archetypes.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/support/archetypes.hpp b/test/support/archetypes.hpp index 2538c2590..da6212301 100644 --- a/test/support/archetypes.hpp +++ b/test/support/archetypes.hpp @@ -147,7 +147,7 @@ struct ValueBase { protected: constexpr static int check_value(int const& val) { #if TEST_STD_VER < 14 - return val == -1 || val == 999 ? TEST_THROW(42) : val; + return val == -1 || val == 999 ? (TEST_THROW(42), 0) : val; #else assert(val != -1); assert(val != 999); return val; @@ -155,7 +155,7 @@ protected: } constexpr static int check_value(int& val, int val_cp = 0) { #if TEST_STD_VER < 14 - return val_cp = val, val = -1, (val_cp == -1 || val_cp == 999 ? TEST_THROW(42) : val_cp); + return val_cp = val, val = -1, (val_cp == -1 || val_cp == 999 ? (TEST_THROW(42), 0) : val_cp); #else assert(val != -1); assert(val != 999); val_cp = val;