如何声明模板常量类型?

时间:2014-12-17 18:44:46

标签: c++ templates const

如果我创建了一个typedef,例如

typedef int const cint;

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

但是,typedef不能使用模板。我希望能够声明像Constant<SomeType>这样的模板,并将其引用到const SomeType,就像我在上面使用cint一样。有可能吗?

2 个答案:

答案 0 :(得分:8)

C ++ 11:

template <typename T>
using Constant = const T;

Constant<int> i = 1;
//! i = 2; // error: assignment of read-only variable 'i'

C ++ 03:

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

Constant<int>::type i = 1;

答案 1 :(得分:5)

std::add_const_t<SomeType>const SomeType相同。