如果我创建了一个typedef,例如
typedef int const cint;
cint
将引用无法修改的int。我可以在任何带有类型(模板参数,函数定义等)的上下文中使用cint
。
但是,typedef不能使用模板。我希望能够声明像Constant<SomeType>
这样的模板,并将其引用到const SomeType
,就像我在上面使用cint
一样。有可能吗?
答案 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
相同。