Namespaces
Variants

std:: is_arithmetic

From cppreference.net
Metaprogramming library
Type traits
Type categories
(C++11)
(C++11) ( DR* )
(C++11)
(C++11)
is_arithmetic
(C++11)
Type properties
(C++11)
(C++11)
(C++14)
(C++11) (deprecated in C++26)
(C++11) ( until C++20* )
(C++11) (deprecated in C++20)
(C++11)
Type trait constants
Metafunctions
(C++17)
Supported operations
Relationships and property queries
Type modifications
Type transformations
(C++11) (deprecated in C++23)
(C++11) (deprecated in C++23)
(C++11)
(C++11) ( until C++20* ) (C++17)

Compile-time rational arithmetic
Compile-time integer sequences
Definiert im Header <type_traits>
template < class T >
struct is_arithmetic ;
(seit C++11)

std::is_arithmetic ist ein UnaryTypeTrait .

Wenn T ein arithmetischer Typ ist (d. h. ein Ganzzahltyp oder ein Gleitkommatyp) oder eine cv-qualified Version davon, stellt die Member-Konstante value gleich true bereit. Für jeden anderen Typ ist value gleich false .

Falls das Programm Spezialisierungen für std::is_arithmetic oder std::is_arithmetic_v (since C++17) hinzufügt, ist das Verhalten undefiniert.

Inhaltsverzeichnis

Template-Parameter

T - ein zu prüfender Typ

Hilfsvariablen-Template

template < class T >
constexpr bool is_arithmetic_v = is_arithmetic < T > :: value ;
(seit C++17)

Geerbt von std:: integral_constant

Member-Konstanten

value
[static]
true wenn T ein arithmetischer Typ ist, false andernfalls
(öffentliche statische Member-Konstante)

Member-Funktionen

operator bool
konvertiert das Objekt zu bool , gibt value zurück
(öffentliche Member-Funktion)
operator()
(C++14)
gibt value zurück
(öffentliche Member-Funktion)

Member-Typen

Typ Definition
value_type bool
type std:: integral_constant < bool , value >

Hinweise

Arithmetische Typen sind die eingebauten Typen, für welche die arithmetischen Operatoren ( + , - , * , / ) definiert sind (möglicherweise in Kombination mit den üblichen arithmetischen Konvertierungen).

Spezialisierungen von std::numeric_limits sind für alle arithmetischen Typen verfügbar.

Mögliche Implementierung

template<class T>
struct is_arithmetic : std::integral_constant<bool,
                                              std::is_integral<T>::value ||
                                              std::is_floating_point<T>::value> {};

Beispiel

#include <atomic>
#include <cstddef>
#include <type_traits>
class A {};
enum class B : int { e };
static_assert(
    std::is_arithmetic_v<bool>            == true  and
    std::is_arithmetic_v<char>            == true  and
    std::is_arithmetic_v<char const>      == true  and
    std::is_arithmetic_v<int>             == true  and
    std::is_arithmetic_v<int const>       == true  and
    std::is_arithmetic_v<float>           == true  and
    std::is_arithmetic_v<float const>     == true  and
    std::is_arithmetic_v<std::size_t>     == true  and
    std::is_arithmetic_v<char&>           == false and
    std::is_arithmetic_v<char*>           == false and
    std::is_arithmetic_v<int&>            == false and
    std::is_arithmetic_v<int*>            == false and
    std::is_arithmetic_v<float&>          == false and
    std::is_arithmetic_v<float*>          == false and
    std::is_arithmetic_v<A>               == false and
    std::is_arithmetic_v<B>               == false and
    std::is_arithmetic_v<decltype(B::e)>  == false and
    std::is_arithmetic_v<std::byte>       == false and
    std::is_arithmetic_v<std::atomic_int> == false
);
int main() {}

Siehe auch

prüft, ob ein Typ ein ganzzahliger Typ ist
(Klassentemplate)
prüft, ob ein Typ ein Gleitkommatyp ist
(Klassentemplate)