Class constant

Synopsis

#include "breeze/meta/constant.hpp"

template< typename T, T v >
class constant

Description

Wrapper for (integral) constant expressions.

This template is a fundamental building block for our meta-programming facilities, which date from when C++ didn't have constexpr. So, it wraps a constant into a type.

Type requirements
T must be a type suitable for declaring an integral constant expression or a const-qualified version of such a type (e.g. int const).
Naming rationale
Though at the time of writing (September 2006) only constants of integral and enumeration type are allowed in C++, we chose a name which doesn't mention either families of types, in order to eventually accommodate, for instance, floating point types as well, if ever allowed by the standard.

Source

Lines 43-59 in breeze/meta/constant.hpp.

template< typename T, T v >
class constant
{
public:
    //!     A typedef for the type \c T.
    // -----------------------------------------------------------------------
    typedef T           value_type ;

    //!     The same as \c constant< T, v >.
    // -----------------------------------------------------------------------
    typedef constant    type ;

    //!     The result of the metafunction.
    // -----------------------------------------------------------------------
    static value_type const
                        value = v ;
} ;