Ho il seguente codice che non viene compilato. Questo sono due funzioni in una classe template che prende gli argomentiMetodo template enable_if specializzazione
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() {
// ....
}
voglio avere una specializzazione in un metodo membro a seconda del tipo Ret è.
Qualcuno ha qualche idea?
È possibile, se uno dei sovraccarichi è l'unica percorribile in fase di chiamata. :) http://liveworkspace.org/code/fd6e5383610d4e0d8fb17c5497991355 – Xeo
@Potatoswatter: In realtà no, non era uno scherzo. Vedi il link, puoi perfettamente avere una funzione con esattamente la stessa firma dove solo il tipo di ritorno decide se è valido. : P Inoltre, usa semplicemente 'std :: is_void()', i caratteri di tipo sono necessari per derivare da 'std :: true_type' o' std :: false_type'. –
Xeo
Btw, [puoi semplicemente rendere il membro un modello con un parametro predefinito in C++ 11] (http://liveworkspace.org/code/781d94df5499998947217970c1aebf2a). – Xeo