C++ 17 представил различные шаблоны вспомогательных переменных, например,
template< class T, class U >
inline constexpr bool is_same_v = is_same<T, U>::value;
template< class T >
inline constexpr bool is_aggregate_v = is_aggregate<T>::value;
Все они имеют маркировку inline
. Поскольку constexpr
подразумевает внутреннее связывание по умолчанию [ссылка], даже без inline
, одно правило определения не будет нарушен. Так что я не вижу здесь необходимости в inline
. Я тоже не вижу никакой пользы от этого. Так почему же inline
?
@StoryTeller Наконец, я понял пример, когда читал его второй раз. Какой хитрый!
Обратите внимание, что я пометил его как дубликат из-за примера в этот ответ. Олив описывает, как нарушение ODR может произойти в спешке.