Revert "Merge to upstream r304942."
This reverts commit83b1388ecd, reversing changes made tof20819f925. Test: treehugger Bug: None
This commit is contained in:
@@ -16,10 +16,8 @@
|
||||
|
||||
#include <numeric>
|
||||
#include <cassert>
|
||||
#include <climits>
|
||||
#include <cstdint>
|
||||
#include <cstdlib> // for rand()
|
||||
#include <type_traits>
|
||||
#include <iostream>
|
||||
|
||||
constexpr struct {
|
||||
int x;
|
||||
@@ -38,24 +36,21 @@ constexpr struct {
|
||||
|
||||
|
||||
template <typename Input1, typename Input2, typename Output>
|
||||
constexpr bool test0(int in1, int in2, int out)
|
||||
constexpr bool test0(Input1 in1, Input2 in2, Output out)
|
||||
{
|
||||
auto value1 = static_cast<Input1>(in1);
|
||||
auto value2 = static_cast<Input2>(in2);
|
||||
static_assert(std::is_same_v<Output, decltype(std::gcd(value1, value2))>, "");
|
||||
static_assert(std::is_same_v<Output, decltype(std::gcd(value2, value1))>, "");
|
||||
assert(static_cast<Output>(out) == std::gcd(value1, value2));
|
||||
return true;
|
||||
static_assert((std::is_same<Output, decltype(std::gcd(in1, in2))>::value), "" );
|
||||
static_assert((std::is_same<Output, decltype(std::gcd(in2, in1))>::value), "" );
|
||||
return out == std::gcd(in1, in2) ? true : (std::abort(), false);
|
||||
}
|
||||
|
||||
|
||||
template <typename Input1, typename Input2 = Input1>
|
||||
constexpr bool do_test(int = 0)
|
||||
{
|
||||
using S1 = std::make_signed_t<Input1>;
|
||||
using S2 = std::make_signed_t<Input2>;
|
||||
using U1 = std::make_unsigned_t<Input1>;
|
||||
using U2 = std::make_unsigned_t<Input2>;
|
||||
using S1 = typename std::make_signed<Input1>::type;
|
||||
using S2 = typename std::make_signed<Input2>::type;
|
||||
using U1 = typename std::make_unsigned<Input1>::type;
|
||||
using U2 = typename std::make_unsigned<Input2>::type;
|
||||
bool accumulate = true;
|
||||
for (auto TC : Cases) {
|
||||
{ // Test with two signed types
|
||||
@@ -108,15 +103,15 @@ int main()
|
||||
assert(do_test<long>(non_cce));
|
||||
assert(do_test<long long>(non_cce));
|
||||
|
||||
static_assert(do_test<std::int8_t>(), "");
|
||||
static_assert(do_test<std::int16_t>(), "");
|
||||
static_assert(do_test<std::int32_t>(), "");
|
||||
static_assert(do_test<std::int64_t>(), "");
|
||||
static_assert(do_test< int8_t>(), "");
|
||||
static_assert(do_test<int16_t>(), "");
|
||||
static_assert(do_test<int32_t>(), "");
|
||||
static_assert(do_test<int64_t>(), "");
|
||||
|
||||
assert(do_test<std::int8_t>(non_cce));
|
||||
assert(do_test<std::int16_t>(non_cce));
|
||||
assert(do_test<std::int32_t>(non_cce));
|
||||
assert(do_test<std::int64_t>(non_cce));
|
||||
assert(do_test< int8_t>(non_cce));
|
||||
assert(do_test<int16_t>(non_cce));
|
||||
assert(do_test<int32_t>(non_cce));
|
||||
assert(do_test<int64_t>(non_cce));
|
||||
|
||||
static_assert(do_test<signed char, int>(), "");
|
||||
static_assert(do_test<int, signed char>(), "");
|
||||
@@ -138,8 +133,8 @@ int main()
|
||||
|
||||
// LWG#2837
|
||||
{
|
||||
auto res = std::gcd(static_cast<std::int64_t>(1234), INT32_MIN);
|
||||
static_assert(std::is_same_v<decltype(res), std::int64_t>, "");
|
||||
assert(res == 2);
|
||||
auto res = std::gcd((int64_t)1234, (int32_t)-2147483648);
|
||||
static_assert( std::is_same<decltype(res), std::common_type<int64_t, int32_t>::type>::value, "");
|
||||
assert(res == 2);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user