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
This commit is contained in:
@@ -147,7 +147,7 @@ struct ValueBase {
|
|||||||
protected:
|
protected:
|
||||||
constexpr static int check_value(int const& val) {
|
constexpr static int check_value(int const& val) {
|
||||||
#if TEST_STD_VER < 14
|
#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
|
#else
|
||||||
assert(val != -1); assert(val != 999);
|
assert(val != -1); assert(val != 999);
|
||||||
return val;
|
return val;
|
||||||
@@ -155,7 +155,7 @@ protected:
|
|||||||
}
|
}
|
||||||
constexpr static int check_value(int& val, int val_cp = 0) {
|
constexpr static int check_value(int& val, int val_cp = 0) {
|
||||||
#if TEST_STD_VER < 14
|
#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
|
#else
|
||||||
assert(val != -1); assert(val != 999);
|
assert(val != -1); assert(val != 999);
|
||||||
val_cp = val;
|
val_cp = val;
|
||||||
|
|||||||
Reference in New Issue
Block a user