std::is_floating_point (3) - Linux Manuals

std::is_floating_point: std::is_floating_point


std::is_floating_point - std::is_floating_point


Defined in header <type_traits>
template< class T > (since C++11)
struct is_floating_point;

Checks whether T is a floating-point type. Provides the member constant value which is equal to true, if T is the type float, double, long double, including any cv-qualified variants. Otherwise, value is equal to false.

Template parameters

T - a type to check

Helper variable template

template< class T > (since C++17)
inline constexpr bool is_floating_point_v = is_floating_point<T>::value;

Inherited from std::integral_constant

Member constants

value true if T is a floating-point type (possibly cv-qualified) , false otherwise
         (public static member constant)

Member functions

              converts the object to bool, returns value
operator bool (public member function)

operator() returns value
              (public member function)

Member types

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

Possible implementation

  template< class T >
  struct is_floating_point
       : std::integral_constant<
           std::is_same<float, typename std::remove_cv<T>::type>::value ||
           std::is_same<double, typename std::remove_cv<T>::type>::value ||
           std::is_same<long double, typename std::remove_cv<T>::type>::value
       > {};


// Run this code

  #include <iostream>
  #include <type_traits>

  class A {};

  int main()
      std::cout << std::boolalpha;
      std::cout << std::is_floating_point<A>::value << '\n';
      std::cout << std::is_floating_point<float>::value << '\n';
      std::cout << std::is_floating_point<int>::value << '\n';



See also

is_iec559 identifies the IEC 559/IEEE 754 floating-point types
              (public static member constant of std::numeric_limits<T>)

is_integral checks if a type is an integral type
              (class template)

is_arithmetic checks if a type is an arithmetic type
              (class template)