Требуется ли "inline" для "void f (auto) {}" в заголовке? - PullRequest
3 голосов
/ 12 апреля 2020

Рассмотрим

template<typename T>
inline void f(T) {} // "inline" can be safely removed.

и

inline void f(auto) {} // Can "inline" also be safely removed?

Согласно стандарту C ++, можно ли безопасно удалить inline в последнем случае?

1 Ответ

5 голосов
/ 12 апреля 2020

С [dcl.fct] / 18 :

Сокращенный шаблон функции - это объявление функции, имеющее один или несколько обобщенных c заполнителей типа параметра ([dcl .spe c .auto]). Сокращенный шаблон функции эквивалентен шаблону функции ([temp.fct]), чей список параметров-шаблонов включает в себя один шаблонный параметр изобретенного типа для каждого заполнителя типа шаблона c в объявлении функции, в порядке появления.

Акцент добавлен. Это не оставляет много места для маневра, поскольку inline не является значением по умолчанию.

...