SFINAE verifica operador + =
Estoy tratando de eliminar una sobrecarga de un conjunto de sobrecarga sioperator+=
Está perdido.
Se como comprobar siT+T
es legal :
template<typename T,
typename CheckTplusT = decltype(std::declval<T>() + std::declval<T>())>
void foo(T a, T b, ...)
{
a = a + b;
}
pero esto no funciona para+=
template<typename T,
typename CheckTplusT = decltype(std::declval<T>() += std::declval<T>())>
void foo(T a, T b, ...)
{
a += b;
}
¿Es esto reparable mediante el uso de otra expresión dentrodecltype
o necesito otra construcción SFINAE?
La razón por la que necesito que esto se elimine del conjunto de sobrecarga es que choca con otra sobrecarga que acepta un functor como alternativa a+=
. Los compiladores son VS2013, gcc4.8