在stackoverflow的上一个问题中的一段代码中,我看到了这个,对我来说很奇怪,声明using:
template <std::size_t SIZE>
class A
{
public:
...
using const_buffer_t = const char(&)[SIZE];
...
};
Run Code Online (Sandbox Code Playgroud)
有人可以解决以下问题:
Nik*_*iou 18
这是一个类型别名,自c ++ 11以来可用的新语法.
你实际上做的是typedefing数组类型
const_buffer_t
Run Code Online (Sandbox Code Playgroud)
将是一个长度为= SIZE的const char数组
Mat*_*lia 14
该using声明是C++ 11中引入的新语法; 它引入了一个类型别名,指定它const_buffer_t现在是该类型的别名const char(&)[SIZE].在这方面,这种使用using基本上与a相同typedef(尽管using类型别名更灵活).
至于我们所讨论的实际类型(const char(&)[SIZE]),它是对大小数组的引用SIZE; 对数组的引用很少使用,但可以使用它们:
int param[5]在函数声明中写入它被解析为int *);另请参阅数组常见问题解答,其中详细解释了大部分内容.