如何声明模板常量类型?

4
如果我创建一个诸如typedef的类型定义,例如:
typedef int const cint;

cint 将引用一个不可修改的 int。我可以在任何需要类型的上下文中使用 cint(模板参数、函数定义等)。

然而,typedef 不能与模板一起使用。我的希望是能够像上面使用 cint 一样声明一个模板,例如 Constant<SomeType>,并将其引用为 const SomeType。这种方式是否可行?


像这样的程序相关内容进行翻译:template <typename T> using Constant = const T; - Piotr Skotnicki
模板 <typename T> 使用 Constant = const T; - Borgleader
对于使用模板的问题,是的,"using" 模板使用是 C++11 的特性。 - Nicko Po
@NickoPo,自C++11以来,别名模板已经可用。 - Piotr Skotnicki
哇,这比我预期的要快得多。 - Kian
2个回答

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;

5

std::add_const_t<SomeType> 相当于 const SomeType


我正要在我的答案中添加这个 +1 - Piotr Skotnicki

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接