2
0
mirror of https://github.com/boostorg/math.git synced 2026-02-22 15:32:28 +00:00

Fix and implement test using C++20 ranges

This commit is contained in:
Matt Borland
2021-03-15 22:39:20 +03:00
parent 98dcc682a9
commit 5d6ebd738d
2 changed files with 40 additions and 4 deletions

View File

@@ -386,4 +386,19 @@ BOOST_AUTO_TEST_CASE_TEMPLATE(error_cases, RealT, test_types)
BOOST_MATH_CHECK_THROW(dist_t(probs2, rates), std::domain_error);
BOOST_MATH_CHECK_THROW(dist_t(probs.begin(), probs.begin(), rates.begin(), rates.begin()), std::domain_error);
BOOST_MATH_CHECK_THROW(dist_t(rates.begin(), rates.begin()), std::domain_error);
// Test C++20 ranges
#if (__cplusplus > 202000L || _MSVC_LANG > 202000L) && defined(__cpp_lib_ranges)
#include <ranges>
#include <array>
std::array<RealT, 2> probs_array {1,2};
std::array<RealT, 3> rates_array {1,2,3};
BOOST_MATH_CHECK_THROW(dist_t(std::ranges::begin(probs_array), std::ranges::end(probs_array), std::ranges::begin(rates_array), std::ranges::end(rates_array)), std::domain_error);
const auto probs_range = probs_array | std::views::all;
const auto rates_range = rates_array | std::views::all;
BOOST_MATH_CHECK_THROW(dist_t(probs_range, rates_range), std::domain_error);
#endif
}