template <class Lhs, class Rhs=Lhs, class Ret=dont_care>
struct has_bit_and_assign : public true_type-or-false_type
{};
Наследие: Если (i) lhs
тип Lhs
и rhs
тип Rhs
может быть использован в экспрессии lhs>>>>>>>>>>>3>>>>.
Поведение по умолчанию (Ret=dont_care
) не должно проверять значение возврата бинарных оператор&=
. Если Ret
отличается от по умолчанию dont_care
тип, значение возврата проверяется как конвертируемое в Ret
. Ret
означает, что значение возврата оператора может быть использовано в качестве аргумента для функции, ожидающей Ret
:
void f(Ret);
Lhs lhs;
Rhs rhs;
f(lhs&=rhs);
Если Ret=void
, то тип возврата проверяется точно на void
.
>3>>>>>>>3>>>>3>>>3>>>3>>>3>>>3>>>>3>>>3>>>3>>>3>>>37><>1>>>>>3>>>>>3>>>>>3>>>>>>>>
Совместимость компилятора: Требуется работать SFINAE (т.е. BOOST_NO_SFINAE не установлен). Только меньшинство довольно старых компиляторов не поддерживают это.
Примеры:
has_bit_and_assign<Lhs,Rhs,Ret>:: value_type
является типом bool
.
has_bit_and_assign<Lhs,Rhs,Ret>:: value
является bool
интегральное постоянное выражение.
has_bit_and_assign<int>:: value
является bool
интегральное постоянное выражение, которое оценивает до правда.
has_bit_and_assign<long>
наследует от true_type
.
has_bit_and_assign<int, int,int>
наследует от true_type
.
has_bit_and_assign<constint, int>
наследует от false_type
.
has_bit_and_assign<int,дп,bool>
наследует от false_type
.
has_bit_and_assign<int, int,std::string>
наследует от false_type
.
См. также: Оператор Тип Трайты
Знания: