Я только что наткнулся на std::alignment_of
тип черта, и его скоро стать другом std::alignment_of_v
, Похоже, они были специально разработаны, чтобы быть эквивалентными простому призыву к alignof
, и будущее добавление _v
Помощник указывает, что это не просто бит наследства.
Какая польза от std::alignment_of
(_v
), когда мы имеем alignof
?
Они почти полностью излишни. Как отметил @Revolver, они были представлены в разных статьях, и alignment_of
происходит от boost
почти дословно.
Но это не значит, что эта черта бесполезна.
template<class...>class
могут быть переданы другим template
и используется с метапрограммированием. Операторы как alignof
не может: вы должны написать template<class>class alignment_of
прежде чем вы могли бы передать его в средства метапрограммирования.
Теперь то же самое можно сказать о sizeof
нуждающийся в std::size_of<class>
шаблон.
…
Добавление _v
потому что они подметали каждый ::value
integral_constant
шаблон в std
и добавил _v
переменный шаблон. Подумайте, какие из них достойны, а какие нет, а рисовать на велосипедах и почти бессмысленно: легче сделать все, чем тратить усилия на подбор достойных. Это делается не является доказательством того, что функция не устарела.
std::alignment_of
вводится как порт библиотеки признаков типа Boost. Это предшествует C ++ 11 и alignof
ключевое слово. Эта черта была заменена alignof
оператор, но он был сохранен в основном для совместимости (так что вы можете просто заменить boost::
с std::
) а также _v
переменный псевдоним введен для согласованности с другими частями библиотеки.