GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
std::integral_constant(3) C++ Standard Libary std::integral_constant(3)

std::integral_constant - std::integral_constant


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


std::integral_constant wraps a static constant of specified type. It is the base
class for the C++ type traits.


The behavior of a program that adds specializations for integral_constant is
undefined.


Helper alias templates


A helper alias template std::bool_constant is defined for the common case where T is
bool.


template <bool B> (since C++17)
using bool_constant = integral_constant<bool, B>;


Feature-test macro: __cpp_lib_bool_constant


Two typedefs for the common case where T is bool are provided:


Defined in header <type_traits>
Type Definition
true_type std::integral_constant<bool, true>
false_type std::integral_constant<bool, false>


Type Definition
value_type T
type std::integral_constant<T,v>


Name Value
constexpr T value static constant of type T with value v
[static] (public static member constant)


operator value_type returns the wrapped value
(public member function)
operator() returns the wrapped value
(C++14) (public member function)

std::integral_constant::operator value_type


constexpr operator value_type() const noexcept;


Conversion function. Returns the wrapped value.

std::integral_constant::operator()


constexpr value_type operator()() const noexcept; (since C++14)


Returns the wrapped value. This function enables std::integral_constant to serve as
a source of compile-time function objects.


Feature-test macro: __cpp_lib_integral_constant_callable


template<class T, T v>
struct integral_constant {
static constexpr T value = v;
using value_type = T;
using type = integral_constant; // using injected-class-name
constexpr operator value_type() const noexcept { return value; }
constexpr value_type operator()() const noexcept { return value; } // since c++14
};

// Run this code


#include <type_traits>


int main()
{
typedef std::integral_constant<int, 2> two_t;
typedef std::integral_constant<int, 4> four_t;


// static_assert(std::is_same<two_t, four_t>::value,
// "two_t and four_t are not equal!");
// error: static assertion failed: "two_t and four_t are not equal!"


static_assert(two_t::value*2 == four_t::value,
"2*2 != 4"
);


enum class my_e { e1, e2 };


typedef std::integral_constant<my_e, my_e::e1> my_e_e1;
typedef std::integral_constant<my_e, my_e::e2> my_e_e2;


static_assert(my_e_e1() == my_e::e1);


// static_assert(my_e_e1::value == my_e::e2,
// "my_e_e1::value != my_e::e2");
// error: static assertion failed: "my_e_e1::value != my_e::e2"


static_assert(std::is_same<my_e_e2, my_e_e2>::value,
"my_e_e2 != my_e_e2");
}

2022.07.31 http://cppreference.com

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.