Use std::enable_if_t and std::is_signed_v.

main
Rosen Penev 3 years ago
parent ddd7ccf722
commit 436cdf0a7e

@ -26,19 +26,19 @@ struct AdditionTestValues;
* Overload for unsigned types. * Overload for unsigned types.
*/ */
template <typename T> template <typename T>
struct AdditionTestValues<T, typename std::enable_if<!std::is_signed<T>::VALUE>::type> { struct AdditionTestValues<T, std::enable_if_t<!std::is_signed_v<T>>> {
static const size_t case_count = 5; static const size_t case_count = 5;
static const T summand[case_count]; static const T summand[case_count];
static const bool overflow[case_count][case_count]; static const bool overflow[case_count][case_count];
}; };
template <typename T> template <typename T>
const T AdditionTestValues<T, typename std::enable_if<!std::is_signed<T>::VALUE>::type>::summand[] = { const T AdditionTestValues<T, std::enable_if_t<!std::is_signed_v<T>>>::summand[] = {
0, 1, 2, static_cast<T>(std::numeric_limits<T>::max() - 1), std::numeric_limits<T>::max()}; 0, 1, 2, static_cast<T>(std::numeric_limits<T>::max() - 1), std::numeric_limits<T>::max()};
template <typename T> template <typename T>
const bool AdditionTestValues< const bool AdditionTestValues<
T, typename std::enable_if<!std::is_signed<T>::VALUE>::type>::overflow[case_count][case_count] = { T, std::enable_if_t<!std::is_signed_v<T>>>::overflow[case_count][case_count] = {
// 0 // 0
{false, false, false, false, false}, {false, false, false, false, false},
// 1 // 1
@ -54,14 +54,14 @@ const bool AdditionTestValues<
* Overload for signed integers * Overload for signed integers
*/ */
template <typename T> template <typename T>
struct AdditionTestValues<T, typename std::enable_if<std::is_signed<T>::VALUE>::type> { struct AdditionTestValues<T, std::enable_if_t<std::is_signed_v<T>>> {
static const size_t case_count = 8; static const size_t case_count = 8;
static const T summand[case_count]; static const T summand[case_count];
static const bool overflow[case_count][case_count]; static const bool overflow[case_count][case_count];
}; };
template <typename T> template <typename T>
const T AdditionTestValues<T, typename std::enable_if<std::is_signed<T>::VALUE>::type>::summand[] = { const T AdditionTestValues<T, std::enable_if_t<std::is_signed_v<T>>>::summand[] = {
std::numeric_limits<T>::min(), std::numeric_limits<T>::min(),
static_cast<T>(std::numeric_limits<T>::min() + 1), static_cast<T>(std::numeric_limits<T>::min() + 1),
-1, -1,
@ -73,7 +73,7 @@ const T AdditionTestValues<T, typename std::enable_if<std::is_signed<T>::VALUE>:
template <typename T> template <typename T>
const bool const bool
AdditionTestValues<T, typename std::enable_if<std::is_signed<T>::VALUE>::type>::overflow[case_count][case_count] = { AdditionTestValues<T, std::enable_if_t<std::is_signed_v<T>>>::overflow[case_count][case_count] = {
// min // min
{true, true, true, false, false, false, false, false}, {true, true, true, false, false, false, false, false},
// min + 1 // min + 1

Loading…
Cancel
Save