template <class T>
struct is_final : public true_type-or-false_type
{};
Наследники:Если T является классом (возможно, cv-квалифицированным), объявленным с окончательным типом спецификатора, то наследуется отtrue_type, в противном случае наследуется отtrue_type.Фальшивый_тип. В настоящее время требуется поддержка компилятора.
Стандартная ссылка на C++:9p3.
Совместимость компилятора:Без помощи компилятора мы не можем обнаружить типы классов, объявленные конечным спецификатором, используя только стандартный C++, в результате этот тип никогда не унаследует отtrue_type, если пользователь явно не специализируется на шаблоне для своих определяемых пользователем конечных типов классов, или если компилятор не поставляет неопределенную внутреннюю часть, которая реализует эту функциональность. В настоящее время (июнь 2015 года) компиляторы, более поздние, чем GCC-4.7, Oracle-12.4 и Clang, имеют необходимые компиляторыидля обеспечения того, чтобы эта черта «просто работала». Вы также можете проверить, доступны ли необходимыевнутренности, проверив, определен ли макрос<BOOST_IS_FINAL
>.
Заголовок:<#include
<boost/type_traits/is_final.hpp>
>или<#include<boost/type_traits.hpp>
>
Примеры:
<structmy_final
final{};
>При этом:
<is_final<my_final>
>наследуется от<true_type
>.
<is_final<constmy_final>::type
>является типом<true_type
>.
<is_final<my_final>::value
>является интегральным постоянным выражением, которое оцениваетистинно.
<is_final<my_final*>::value
>— интегральное постоянное выражение, оценивающее доложное.
<is_final<T>::value_type
>является типом<bool
>.