Bitset tests feature a sequence of tests of increasing bitset sizes,
but these tests rely on exceptions when the bitset size is less than
50 elements. So under libcpp-no-exceptions do not run the
smaller-than-50 tests.
Details
Details
Diff Detail
Diff Detail
- Repository
- rL LLVM
Event Timeline
Comment Actions
Instead of just #ifdef-ing out the tests that throw I would rather see something like this:
template <std::size_t N> void test_test(bool test_throws) { const std::bitset<N> v1 = make_bitset<N>(); #ifdef TEST_HAS_NO_EXCEPTIONS if (test_throws) return; #else try { #endif bool b = v1.test(50); if (50 >= v1.size()) assert(false); assert(b == v1[50]); assert(!test_throws); #ifndef TEST_HAS_NO_EXCEPTIONS } catch (std::out_of_range&) { assert(test_throws); } #endif } int main() { // Throwing cases test_test<33>(true); // Non-throwing cases test_test<63>(false); }