Что означает "typename =" в параметрах шаблона?
Я видел это выражение на стр. 189 книги "Эффективный современный С++":
template<typename T,
typename = typename std::enable_if<condition>::type>
explicit Person(T&& n);
Мне просто интересно, что означает часть "typename =
". Он определенно выглядит как аргумент по умолчанию для параметра шаблона. Но вам не нужно что-то вроде "typename some_name = ...
" в аргументе по умолчанию? Нет имени для второго аргумента шаблона, и я не вижу в этом случае аргумент второго шаблона.
P.S. Когда я ищу в Google (или любой другой поисковой системе) для ответа, знак равенства всегда отбрасывается, и это просто делает поиск ответа практически невозможным...
Ответы
Ответ 1
Это необязательный параметр шаблона без имени и значения по умолчанию.
Он использовал условие enable_if
; он создаст ошибку компилятора, если условие не выполнено.
Вы можете использовать точно такой же синтаксис для обычных аргументов метода.