如何声明模板常量类型?

Kia*_*ian 3 c++ templates const

如果我做一个typedef如

typedef int const cint;
Run Code Online (Sandbox Code Playgroud)

cint将引用一个无法修改的int.我可以cint在任何采用类型(模板参数,函数定义等)的上下文中使用.

但是,typedef不适用于模板.我的希望是能够声明一个类似的模板,Constant<SomeType>并将其引用到a const SomeType,我可以用cint上面的方式.可能吗?

Pio*_*cki 8

C++ 11:

template <typename T>
using Constant = const T;

Constant<int> i = 1;
//! i = 2; // error: assignment of read-only variable 'i'
Run Code Online (Sandbox Code Playgroud)

C++ 03:

template <typename T>
struct Constant
{
    typedef const T type;
};

Constant<int>::type i = 1;
Run Code Online (Sandbox Code Playgroud)


asc*_*ler 5

std::add_const_t<SomeType>是一样的const SomeType.