This patch implements built-in trait for std::is_arithmetic.
gcc/cp/ChangeLog:
* cp-trait.def: Define __is_arithmetic.
* constraint.cc (diagnose_trait_expr): Handle CPTK_IS_ARITHMETIC.
* semantics.cc (trait_expr_value): Likewise.
(finish_trait_expr): Likewise.
gcc/testsuite/ChangeLog:
* g++.dg/ext/has-builtin-1.C: Test existence of __is_arithmetic.
* g++.dg/ext/is_arithmetic.C: New test.
* g++.dg/tm/pr46567.C (__is_arithmetic): Rename to ...
(__is_arith): ... this.
* g++.dg/torture/pr57107.C: Likewise.
libstdc++-v3/ChangeLog:
* include/bits/cpp_type_traits.h (__is_arithmetic): Rename to ...
(__is_arith): ... this.
* include/c_global/cmath: Use __is_arith instead.
* include/c_std/cmath: Likewise.
* include/tr1/cmath: Likewise.
Signed-off-by: Ken Matsui <[email protected]>
---
gcc/cp/constraint.cc | 3 ++
gcc/cp/cp-trait.def | 1 +
gcc/cp/semantics.cc | 4 ++
gcc/testsuite/g++.dg/ext/has-builtin-1.C | 3 ++
gcc/testsuite/g++.dg/ext/is_arithmetic.C | 33 ++++++++++++++
gcc/testsuite/g++.dg/tm/pr46567.C | 6 +--
gcc/testsuite/g++.dg/torture/pr57107.C | 4 +-
libstdc++-v3/include/bits/cpp_type_traits.h | 4 +-
libstdc++-v3/include/c_global/cmath | 48 ++++++++++-----------
libstdc++-v3/include/c_std/cmath | 24 +++++------
libstdc++-v3/include/tr1/cmath | 24 +++++------
11 files changed, 99 insertions(+), 55 deletions(-)
create mode 100644 gcc/testsuite/g++.dg/ext/is_arithmetic.C
diff --git a/gcc/cp/constraint.cc b/gcc/cp/constraint.cc
index c9d627fa782..3a7f968eae8 100644
--- a/gcc/cp/constraint.cc
+++ b/gcc/cp/constraint.cc
@@ -3714,6 +3714,9 @@ diagnose_trait_expr (tree expr, tree args)
case CPTK_IS_AGGREGATE:
inform (loc, " %qT is not an aggregate", t1);
break;
+ case CPTK_IS_ARITHMETIC:
+ inform (loc, " %qT is not an arithmetic type", t1);
+ break;
case CPTK_IS_ARRAY:
inform (loc, " %qT is not an array", t1);
break;
diff --git a/gcc/cp/cp-trait.def b/gcc/cp/cp-trait.def
index bc2bb5e5abb..06c203ce4de 100644
--- a/gcc/cp/cp-trait.def
+++ b/gcc/cp/cp-trait.def
@@ -59,6 +59,7 @@ DEFTRAIT_EXPR (HAS_UNIQUE_OBJ_REPRESENTATIONS,
"__has_unique_object_representati
DEFTRAIT_EXPR (HAS_VIRTUAL_DESTRUCTOR, "__has_virtual_destructor", 1)
DEFTRAIT_EXPR (IS_ABSTRACT, "__is_abstract", 1)
DEFTRAIT_EXPR (IS_AGGREGATE, "__is_aggregate", 1)
+DEFTRAIT_EXPR (IS_ARITHMETIC, "__is_arithmetic", 1)
DEFTRAIT_EXPR (IS_ARRAY, "__is_array", 1)
DEFTRAIT_EXPR (IS_ASSIGNABLE, "__is_assignable", 2)
DEFTRAIT_EXPR (IS_BASE_OF, "__is_base_of", 2)
diff --git a/gcc/cp/semantics.cc b/gcc/cp/semantics.cc
index 4b73863ec77..351f453356f 100644
--- a/gcc/cp/semantics.cc
+++ b/gcc/cp/semantics.cc
@@ -12128,6 +12128,9 @@ trait_expr_value (cp_trait_kind kind, tree type1, tree
type2)
case CPTK_IS_AGGREGATE:
return CP_AGGREGATE_TYPE_P (type1);
+ case CPTK_IS_ARITHMETIC:
+ return ARITHMETIC_TYPE_P (type1);
+
case CPTK_IS_ARRAY:
return type_code1 == ARRAY_TYPE;
@@ -12391,6 +12394,7 @@ finish_trait_expr (location_t loc, cp_trait_kind kind,
tree type1, tree type2)
return error_mark_node;
break;
+ case CPTK_IS_ARITHMETIC:
case CPTK_IS_ARRAY:
case CPTK_IS_BOUNDED_ARRAY:
case CPTK_IS_CLASS:
diff --git a/gcc/testsuite/g++.dg/ext/has-builtin-1.C
b/gcc/testsuite/g++.dg/ext/has-builtin-1.C
index efce04fd09d..4bc85f4babb 100644
--- a/gcc/testsuite/g++.dg/ext/has-builtin-1.C
+++ b/gcc/testsuite/g++.dg/ext/has-builtin-1.C
@@ -56,6 +56,9 @@
#if !__has_builtin (__is_aggregate)
# error "__has_builtin (__is_aggregate) failed"
#endif
+#if !__has_builtin (__is_arithmetic)
+# error "__has_builtin (__is_arithmetic) failed"
+#endif
#if !__has_builtin (__is_array)
# error "__has_builtin (__is_array) failed"
#endif
diff --git a/gcc/testsuite/g++.dg/ext/is_arithmetic.C
b/gcc/testsuite/g++.dg/ext/is_arithmetic.C
new file mode 100644
index 00000000000..fd35831f646
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ext/is_arithmetic.C
@@ -0,0 +1,33 @@
+// { dg-do compile { target c++11 } }
+
+#include <testsuite_tr1.h>
+
+using namespace __gnu_test;
+
+#define SA(X) static_assert((X),#X)
+#define SA_TEST_CATEGORY(TRAIT, TYPE, EXPECT) \
+ SA(TRAIT(TYPE) == EXPECT); \
+ SA(TRAIT(const TYPE) == EXPECT); \
+ SA(TRAIT(volatile TYPE) == EXPECT); \
+ SA(TRAIT(const volatile TYPE) == EXPECT)
+
+SA_TEST_CATEGORY(__is_arithmetic, void, false);
+
+SA_TEST_CATEGORY(__is_arithmetic, char, true);
+SA_TEST_CATEGORY(__is_arithmetic, signed char, true);
+SA_TEST_CATEGORY(__is_arithmetic, unsigned char, true);
+SA_TEST_CATEGORY(__is_arithmetic, wchar_t, true);
+SA_TEST_CATEGORY(__is_arithmetic, short, true);
+SA_TEST_CATEGORY(__is_arithmetic, unsigned short, true);
+SA_TEST_CATEGORY(__is_arithmetic, int, true);
+SA_TEST_CATEGORY(__is_arithmetic, unsigned int, true);
+SA_TEST_CATEGORY(__is_arithmetic, long, true);
+SA_TEST_CATEGORY(__is_arithmetic, unsigned long, true);
+SA_TEST_CATEGORY(__is_arithmetic, long long, true);
+SA_TEST_CATEGORY(__is_arithmetic, unsigned long long, true);
+SA_TEST_CATEGORY(__is_arithmetic, float, true);
+SA_TEST_CATEGORY(__is_arithmetic, double, true);
+SA_TEST_CATEGORY(__is_arithmetic, long double, true);
+
+// Sanity check.
+SA_TEST_CATEGORY(__is_arithmetic, ClassType, false);
diff --git a/gcc/testsuite/g++.dg/tm/pr46567.C
b/gcc/testsuite/g++.dg/tm/pr46567.C
index f08bbf6fd7b..79d304e0309 100644
--- a/gcc/testsuite/g++.dg/tm/pr46567.C
+++ b/gcc/testsuite/g++.dg/tm/pr46567.C
@@ -217,16 +217,16 @@ namespace std __attribute__ ((__visibility__
("default"))) {
typedef __true_type __type;
};
template<typename _Tp>
- struct __is_arithmetic
+ struct __is_arith
: public __traitor<__is_integer<_Tp>, __is_floating<_Tp> >
{ };
template<typename _Tp>
struct __is_fundamental
- : public __traitor<__is_void<_Tp>, __is_arithmetic<_Tp> >
+ : public __traitor<__is_void<_Tp>, __is_arith<_Tp> >
{ };
template<typename _Tp>
struct __is_scalar
- : public __traitor<__is_arithmetic<_Tp>, __is_ptr<_Tp> >
+ : public __traitor<__is_arith<_Tp>, __is_ptr<_Tp> >
{ };
template<typename _Tp>
struct __is_char
diff --git a/gcc/testsuite/g++.dg/torture/pr57107.C
b/gcc/testsuite/g++.dg/torture/pr57107.C
index be0689096fb..da592b9fd23 100644
--- a/gcc/testsuite/g++.dg/torture/pr57107.C
+++ b/gcc/testsuite/g++.dg/torture/pr57107.C
@@ -25,9 +25,9 @@ namespace std __attribute__ ((__visibility__ ("default"))) {
enum {
__value = 0 };
};
- template<typename _Tp> struct __is_arithmetic : public
__traitor<__is_integer<_Tp>, __is_floating<_Tp> > {
+ template<typename _Tp> struct __is_arith : public
__traitor<__is_integer<_Tp>, __is_floating<_Tp> > {
};
- template<typename _Tp> struct __is_scalar : public
__traitor<__is_arithmetic<_Tp>, __is_ptr<_Tp> > {
+ template<typename _Tp> struct __is_scalar : public
__traitor<__is_arith<_Tp>, __is_ptr<_Tp> > {
};
}
namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) {
diff --git a/libstdc++-v3/include/bits/cpp_type_traits.h
b/libstdc++-v3/include/bits/cpp_type_traits.h
index 4da1e7c407c..51ed5b07716 100644
--- a/libstdc++-v3/include/bits/cpp_type_traits.h
+++ b/libstdc++-v3/include/bits/cpp_type_traits.h
@@ -389,7 +389,7 @@ __INT_N(__GLIBCXX_TYPE_INT_N_3)
// An arithmetic type is an integer type or a floating point type
//
template<typename _Tp>
- struct __is_arithmetic
+ struct __is_arith
: public __traitor<__is_integer<_Tp>, __is_floating<_Tp> >
{ };
@@ -398,7 +398,7 @@ __INT_N(__GLIBCXX_TYPE_INT_N_3)
//
template<typename _Tp>
struct __is_scalar
- : public __traitor<__is_arithmetic<_Tp>, __is_ptr<_Tp> >
+ : public __traitor<__is_arith<_Tp>, __is_ptr<_Tp> >
{ };
//
diff --git a/libstdc++-v3/include/c_global/cmath
b/libstdc++-v3/include/c_global/cmath
index 6461c92ebfe..a0ddc1dbbeb 100644
--- a/libstdc++-v3/include/c_global/cmath
+++ b/libstdc++-v3/include/c_global/cmath
@@ -1259,8 +1259,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
template<typename _Tp, typename _Up>
constexpr typename
- __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value
- && __is_arithmetic<_Up>::__value), bool>::__type
+ __gnu_cxx::__enable_if<(__is_arith<_Tp>::__value
+ && __is_arith<_Up>::__value), bool>::__type
isgreater(_Tp __x, _Up __y)
{
typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
@@ -1285,8 +1285,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
template<typename _Tp, typename _Up>
constexpr typename
- __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value
- && __is_arithmetic<_Up>::__value), bool>::__type
+ __gnu_cxx::__enable_if<(__is_arith<_Tp>::__value
+ && __is_arith<_Up>::__value), bool>::__type
isgreaterequal(_Tp __x, _Up __y)
{
typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
@@ -1311,8 +1311,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
template<typename _Tp, typename _Up>
constexpr typename
- __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value
- && __is_arithmetic<_Up>::__value), bool>::__type
+ __gnu_cxx::__enable_if<(__is_arith<_Tp>::__value
+ && __is_arith<_Up>::__value), bool>::__type
isless(_Tp __x, _Up __y)
{
typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
@@ -1337,8 +1337,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
template<typename _Tp, typename _Up>
constexpr typename
- __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value
- && __is_arithmetic<_Up>::__value), bool>::__type
+ __gnu_cxx::__enable_if<(__is_arith<_Tp>::__value
+ && __is_arith<_Up>::__value), bool>::__type
islessequal(_Tp __x, _Up __y)
{
typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
@@ -1363,8 +1363,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
template<typename _Tp, typename _Up>
constexpr typename
- __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value
- && __is_arithmetic<_Up>::__value), bool>::__type
+ __gnu_cxx::__enable_if<(__is_arith<_Tp>::__value
+ && __is_arith<_Up>::__value), bool>::__type
islessgreater(_Tp __x, _Up __y)
{
typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
@@ -1389,8 +1389,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT
template<typename _Tp, typename _Up>
constexpr typename
- __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value
- && __is_arithmetic<_Up>::__value), bool>::__type
+ __gnu_cxx::__enable_if<(__is_arith<_Tp>::__value
+ && __is_arith<_Up>::__value), bool>::__type
isunordered(_Tp __x, _Up __y)
{
typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
@@ -1401,7 +1401,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
#else
template<typename _Tp>
- inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
+ inline typename __gnu_cxx::__enable_if<__is_arith<_Tp>::__value,
int>::__type
fpclassify(_Tp __f)
{
@@ -1411,7 +1411,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
}
template<typename _Tp>
- inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
+ inline typename __gnu_cxx::__enable_if<__is_arith<_Tp>::__value,
int>::__type
isfinite(_Tp __f)
{
@@ -1420,7 +1420,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
}
template<typename _Tp>
- inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
+ inline typename __gnu_cxx::__enable_if<__is_arith<_Tp>::__value,
int>::__type
isinf(_Tp __f)
{
@@ -1429,7 +1429,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
}
template<typename _Tp>
- inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
+ inline typename __gnu_cxx::__enable_if<__is_arith<_Tp>::__value,
int>::__type
isnan(_Tp __f)
{
@@ -1438,7 +1438,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
}
template<typename _Tp>
- inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
+ inline typename __gnu_cxx::__enable_if<__is_arith<_Tp>::__value,
int>::__type
isnormal(_Tp __f)
{
@@ -1447,7 +1447,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
}
template<typename _Tp>
- inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
+ inline typename __gnu_cxx::__enable_if<__is_arith<_Tp>::__value,
int>::__type
signbit(_Tp __f)
{
@@ -1456,7 +1456,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
}
template<typename _Tp>
- inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
+ inline typename __gnu_cxx::__enable_if<__is_arith<_Tp>::__value,
int>::__type
isgreater(_Tp __f1, _Tp __f2)
{
@@ -1465,7 +1465,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
}
template<typename _Tp>
- inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
+ inline typename __gnu_cxx::__enable_if<__is_arith<_Tp>::__value,
int>::__type
isgreaterequal(_Tp __f1, _Tp __f2)
{
@@ -1474,7 +1474,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
}
template<typename _Tp>
- inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
+ inline typename __gnu_cxx::__enable_if<__is_arith<_Tp>::__value,
int>::__type
isless(_Tp __f1, _Tp __f2)
{
@@ -1483,7 +1483,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
}
template<typename _Tp>
- inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
+ inline typename __gnu_cxx::__enable_if<__is_arith<_Tp>::__value,
int>::__type
islessequal(_Tp __f1, _Tp __f2)
{
@@ -1492,7 +1492,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
}
template<typename _Tp>
- inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
+ inline typename __gnu_cxx::__enable_if<__is_arith<_Tp>::__value,
int>::__type
islessgreater(_Tp __f1, _Tp __f2)
{
@@ -1501,7 +1501,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
}
template<typename _Tp>
- inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
+ inline typename __gnu_cxx::__enable_if<__is_arith<_Tp>::__value,
int>::__type
isunordered(_Tp __f1, _Tp __f2)
{
diff --git a/libstdc++-v3/include/c_std/cmath b/libstdc++-v3/include/c_std/cmath
index 588ee1e6dc4..c1db699ecdb 100644
--- a/libstdc++-v3/include/c_std/cmath
+++ b/libstdc++-v3/include/c_std/cmath
@@ -467,7 +467,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
#undef isunordered
template<typename _Tp>
- inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
+ inline typename __gnu_cxx::__enable_if<__is_arith<_Tp>::__value,
int>::__type
fpclassify(_Tp __f)
{
@@ -477,7 +477,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
}
template<typename _Tp>
- inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
+ inline typename __gnu_cxx::__enable_if<__is_arith<_Tp>::__value,
int>::__type
isfinite(_Tp __f)
{
@@ -486,7 +486,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
}
template<typename _Tp>
- inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
+ inline typename __gnu_cxx::__enable_if<__is_arith<_Tp>::__value,
int>::__type
isinf(_Tp __f)
{
@@ -495,7 +495,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
}
template<typename _Tp>
- inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
+ inline typename __gnu_cxx::__enable_if<__is_arith<_Tp>::__value,
int>::__type
isnan(_Tp __f)
{
@@ -504,7 +504,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
}
template<typename _Tp>
- inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
+ inline typename __gnu_cxx::__enable_if<__is_arith<_Tp>::__value,
int>::__type
isnormal(_Tp __f)
{
@@ -513,7 +513,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
}
template<typename _Tp>
- inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
+ inline typename __gnu_cxx::__enable_if<__is_arith<_Tp>::__value,
int>::__type
signbit(_Tp __f)
{
@@ -522,7 +522,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
}
template<typename _Tp>
- inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
+ inline typename __gnu_cxx::__enable_if<__is_arith<_Tp>::__value,
int>::__type
isgreater(_Tp __f1, _Tp __f2)
{
@@ -531,7 +531,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
}
template<typename _Tp>
- inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
+ inline typename __gnu_cxx::__enable_if<__is_arith<_Tp>::__value,
int>::__type
isgreaterequal(_Tp __f1, _Tp __f2)
{
@@ -540,7 +540,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
}
template<typename _Tp>
- inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
+ inline typename __gnu_cxx::__enable_if<__is_arith<_Tp>::__value,
int>::__type
isless(_Tp __f1, _Tp __f2)
{
@@ -549,7 +549,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
}
template<typename _Tp>
- inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
+ inline typename __gnu_cxx::__enable_if<__is_arith<_Tp>::__value,
int>::__type
islessequal(_Tp __f1, _Tp __f2)
{
@@ -558,7 +558,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
}
template<typename _Tp>
- inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
+ inline typename __gnu_cxx::__enable_if<__is_arith<_Tp>::__value,
int>::__type
islessgreater(_Tp __f1, _Tp __f2)
{
@@ -567,7 +567,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
}
template<typename _Tp>
- inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
+ inline typename __gnu_cxx::__enable_if<__is_arith<_Tp>::__value,
int>::__type
isunordered(_Tp __f1, _Tp __f2)
{
diff --git a/libstdc++-v3/include/tr1/cmath b/libstdc++-v3/include/tr1/cmath
index ba1b60cc945..2e80f1d0d00 100644
--- a/libstdc++-v3/include/tr1/cmath
+++ b/libstdc++-v3/include/tr1/cmath
@@ -307,7 +307,7 @@ namespace tr1
/// Function template definitions [8.16.3].
template<typename _Tp>
- inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
+ inline typename __gnu_cxx::__enable_if<__is_arith<_Tp>::__value,
int>::__type
fpclassify(_Tp __f)
{
@@ -317,7 +317,7 @@ namespace tr1
}
template<typename _Tp>
- inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
+ inline typename __gnu_cxx::__enable_if<__is_arith<_Tp>::__value,
int>::__type
isfinite(_Tp __f)
{
@@ -326,7 +326,7 @@ namespace tr1
}
template<typename _Tp>
- inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
+ inline typename __gnu_cxx::__enable_if<__is_arith<_Tp>::__value,
int>::__type
isinf(_Tp __f)
{
@@ -335,7 +335,7 @@ namespace tr1
}
template<typename _Tp>
- inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
+ inline typename __gnu_cxx::__enable_if<__is_arith<_Tp>::__value,
int>::__type
isnan(_Tp __f)
{
@@ -344,7 +344,7 @@ namespace tr1
}
template<typename _Tp>
- inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
+ inline typename __gnu_cxx::__enable_if<__is_arith<_Tp>::__value,
int>::__type
isnormal(_Tp __f)
{
@@ -353,7 +353,7 @@ namespace tr1
}
template<typename _Tp>
- inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
+ inline typename __gnu_cxx::__enable_if<__is_arith<_Tp>::__value,
int>::__type
signbit(_Tp __f)
{
@@ -362,7 +362,7 @@ namespace tr1
}
template<typename _Tp>
- inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
+ inline typename __gnu_cxx::__enable_if<__is_arith<_Tp>::__value,
int>::__type
isgreater(_Tp __f1, _Tp __f2)
{
@@ -371,7 +371,7 @@ namespace tr1
}
template<typename _Tp>
- inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
+ inline typename __gnu_cxx::__enable_if<__is_arith<_Tp>::__value,
int>::__type
isgreaterequal(_Tp __f1, _Tp __f2)
{
@@ -380,7 +380,7 @@ namespace tr1
}
template<typename _Tp>
- inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
+ inline typename __gnu_cxx::__enable_if<__is_arith<_Tp>::__value,
int>::__type
isless(_Tp __f1, _Tp __f2)
{
@@ -389,7 +389,7 @@ namespace tr1
}
template<typename _Tp>
- inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
+ inline typename __gnu_cxx::__enable_if<__is_arith<_Tp>::__value,
int>::__type
islessequal(_Tp __f1, _Tp __f2)
{
@@ -398,7 +398,7 @@ namespace tr1
}
template<typename _Tp>
- inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
+ inline typename __gnu_cxx::__enable_if<__is_arith<_Tp>::__value,
int>::__type
islessgreater(_Tp __f1, _Tp __f2)
{
@@ -407,7 +407,7 @@ namespace tr1
}
template<typename _Tp>
- inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
+ inline typename __gnu_cxx::__enable_if<__is_arith<_Tp>::__value,
int>::__type
isunordered(_Tp __f1, _Tp __f2)
{
--
2.42.0