Ответ 1
Это aa псевдоним типа, новый синтаксис, доступный с С++ 11.
То, что вы на самом деле делаете, это typedefing тип массива
const_buffer_t
будет массив const char с длиной = SIZE
На куске кода в предыдущем вопросе в stackoverflow я увидел это, странное для меня объявление с using
:
template <std::size_t SIZE>
class A
{
public:
...
using const_buffer_t = const char(&)[SIZE];
...
};
Не могли бы вы ответить на следующие вопросы:
Это aa псевдоним типа, новый синтаксис, доступный с С++ 11.
То, что вы на самом деле делаете, это typedefing тип массива
const_buffer_t
будет массив const char с длиной = SIZE
Это объявление using
- это новый синтаксис, введенный в С++ 11; он вводит псевдоним типа, указав, что const_buffer_t
теперь является псевдонимом для типа const char(&)[SIZE]
. В этом отношении это использование using
по существу идентично a typedef
(хотя псевдонимы типа using
более гибкие).
Что касается фактического типа, о котором мы говорим (const char(&)[SIZE]
), это ссылка на массив размера SIZE
; ссылки на массив редко используются, но могут быть использованы:
int param[5]
в объявлении функции, он разбирается как int *
);См. также FAQ массива FAQ, где подробно описывается большая часть этого материала.