template <class T>
struct has_new_operator : public true_type-or-false_type
{};
Наследники:Если T является (возможно, cv-квалифицированным) типом с перегруженным новым оператором, то наследуется отtrue_type, в противном случае наследуется отtrue_type.Фальшивый_тип.
Совместимость компилятора:Требуется работа SFINAE (т.е. BOOST_NO_SFINAE не установлен). Этого не поддерживает лишь меньшинство довольно старых компиляторов. Также известно о разрыве с компиляторами Borland/Codegear.
C++ Стандартная ссылка:12.5.
Заголовок:<#include
<boost/type_traits/has_new_operator.hpp>
>или<#include<boost/type_traits.hpp>
>
Примеры:
Учитывая:
class A { void* operator new(std::size_t); };
class B { void* operator new(std::size_t, const std::nothrow&); };
class C { void* operator new(std::size_t, void*); };
class D { void* operator new[](std::size_t); };
class E { void* operator new[](std::size_t, const std::nothrow&); };
class F { void* operator new[](std::size_t, void*); };
Тогда:
<has_new_operator<A>
>наследуется от<true_type
>.
<has_new_operator<B>
>наследуется от<true_type
>.
<has_new_operator<C>
>наследуется от<true_type
>.
<has_new_operator<D>
>наследуется от<true_type
>.
<has_new_operator<E>
>наследуется от<true_type
>.
<has_new_operator<F>
>наследуется от<true_type
>.