Tengo el siguiente código que no se compila. Estos son dos funciones en una clase de plantilla que toma los argumentosMétodo de plantilla enable_if especialización
typename std::enable_if<std::is_void<Ret>::value, Ret>::type _on_dispatched() {
// ...
}
typename std::enable_if<!std::is_void<Ret>::value, Ret>::type _on_dispatched() {
// ....
}
que quieren tener una especialización en un método de la barra dependiendo de qué tipo es Ret.
¿Alguien tiene alguna idea?
Usted puede, si una de las sobrecargas es la única viable en el tiempo de llamada. :) http://liveworkspace.org/code/fd6e5383610d4e0d8fb17c5497991355 – Xeo
@Potatoswatter: En realidad, no, no era una broma. Vea el enlace, puede perfectamente tener una función con exactamente la misma firma donde solo el tipo de devolución decide si es viable. : P Además, solo use 'std :: is_void()', se requieren rasgos de tipo para derivar de 'std :: true_type' o' std :: false_type'. –
Xeo
Por cierto, [puede hacer que el miembro funcione como una plantilla con un parámetro predeterminado en C++ 11] (http://liveworkspace.org/code/781d94df5499998947217970c1aebf2a). – Xeo