Двухкратное объявление шаблона <typename T> - PullRequest
0 голосов
/ 24 июня 2018

Я скопировал этот блок из cppreference

template<class T>
struct Alloc { };
template<class T>
using Vec = vector<T, Alloc<T>>; // type-id is vector<T, Alloc<T>>
Vec<int> v; // Vec<int> is the same as vector<int, Alloc<int>>

Я не понимаю, почему template<typename T> объявили два раза?

Если template<typename T> склонение относится к нижней строке, оно должно быть определенным образом определено.

1 Ответ

0 голосов
/ 24 июня 2018

Аргументы шаблона являются заполнителями, их область действия ограничена только одной декларацией. Следовательно, T in

template<class T> struct Alloc { };

не подключен к T в

template<class T> using Vec = vector<T, Alloc<T>>;

аналогично тому, как вы можете использовать одно и то же имя параметра в различных объявлениях функций.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...