Ответ 1
Что вам нужно, это шаблон alias:
template <size_t S>
using my_array = std::array<double, S>;
Вы не можете напрямую создать шаблон typedef
, см. этот пост.
size_t
- это тип второго параметра шаблона std::array
, а не int
.
Теперь, когда вы знаете о using
, вы должны использовать это. Он может делать все, что делает typedef
, плюс это. Кроме того, вы читаете его слева направо с красивым знаком =
в качестве разделителя, в отличие от typedef
, который иногда может повредить вашим глазам.
Позвольте мне добавить еще два примера использования:
template <typename T>
using dozen = std::array<T, 12>;
И если вы хотите создать псевдоним для std::array
, например, вам нужно будет подражать его сигнатуре шаблона:
template <typename T, size_t S>
using my_array = std::array<T, S>;
- потому что это недопустимо:
using my_array = std::array;