是否可以执行以下操作:
template< typename T >
using T_CCUnit = static const constexpr T;
实际上我只想要static const constexpr
的别名,因为每次在某个文件中编写都很无聊。
我更喜欢c ++ 11中的解决方案。
答案 0 :(得分:3)
你可以很容易地为类型添加const-ness,因为cv-qualifiers修改了类型:
template <typename T>
using T_C = std::add_const_t<T>;
但是,static
和constexpr
修改声明,而不是类型。所以,在这里:
int x1;
const int x2;
static const int x3;
static constexpr const int x4;
// | ^ | type |name
// ^ | constexpr specifier
// storage class specifier
最后三个声明都是const int
类型,但x2
的存储类别与x3
和x4
不同。
老实说,如果主要问题是那个
......写作真的很无聊......
我最好的建议是,您将学习如何在首选编辑器中编写宏或保存常用代码段。
答案 1 :(得分:0)
我认为最适合您的解决方案是使用宏。
#define STATIC_CONST_CONSTEXPR static const constexpr
但严重的是,static
和constexpr
不是该类型的修饰符。在您的情况下,using
所能做的就是const T
。其他任何你自己写的或要求预处理器为你写。
答案 2 :(得分:0)
static
存储限定符适用于实例,而不适用于类型。因此typedef
它是不可能的。
答案 3 :(得分:0)
您不能输入static
或constexpr
- 也不属于该类型。也就是说,即使你可以,没有人会知道:
T_CCUnit<int> x = 4;
意味着,但每个人都会知道:
static constexpr int x = 4;
装置。每次输入额外的7个字符是值得的,以使您的代码更清晰。所有读者的代码和未来的自我都会感谢你。
附注,const
对constexpr
来说是多余的 - 声明为constexpr
的每个变量都隐含const
。