- Remove the one test that clang-5 still fails. - Require all remaining tests to pass using only C++11 native static_assert. - Remove preprocessor-based alternative static_assert implementations. gcc-8 adds calls to static_assert with a comma inside its first argument in the implementation of std::vector. This is legal within the standard, but conflicts with Rebirth's use of static_assert as a two argument preprocessor macro. The macro is not substantially useful, and was only present to compensate for the clang limitation removed in the previous commit. Remove the macro. References: <https://github.com/dxx-rebirth/dxx-rebirth/issues/388>
20 lines
663 B
C++
20 lines
663 B
C++
/*
|
|
* This file is part of the DXX-Rebirth project <http://www.dxx-rebirth.com/>.
|
|
* It is copyright by its individual contributors, as recorded in the
|
|
* project's Git history. See COPYING.txt at the top level for license
|
|
* terms and a link to the Git history.
|
|
*/
|
|
#pragma once
|
|
|
|
#include <type_traits>
|
|
|
|
#define DEFINE_ASSERT_HELPER_CLASS(N,OP,STR) \
|
|
template <typename T, T L, T R> \
|
|
class N : public std::integral_constant<bool, (L OP R)> \
|
|
{ \
|
|
static_assert(L OP R, STR); \
|
|
}
|
|
|
|
DEFINE_ASSERT_HELPER_CLASS(assert_equal, ==, "values must be equal");
|
|
#define assert_equal(L,R,S) static_assert((assert_equal<decltype((L) + 0), (L) + 0, (R) + 0>::value), S)
|