Vaya, pero yo no quería rendirme tan fácilmente. No sé que me pasa que siempre que cuando trato de hacer cosas un poco más complejas con plantillas siempre encuentro problemas que hacen siempre retirarme.
Ahora por ejemplo, olvidando por un momento el tema de tupla-unión. Me encuentro con esta problemática:
Código C++:
Ver original#include <type_traits>
class A {
public:
// un constructor con cualquier parámetro
template<typename U>
void foo(const U& u) {};
// testeando que std::enable_if funcione bien
void bar(const std::enable_if<true, int>::type& u) {};
// probando ahora std::enable_if con una template... error
template<typename U>
void foobar(const typename std::enable_if<true, U>::type&) {};
};
int main() {
A x;
x.foo(3); // OK
x.bar(6); // OK
x.foobar(9); // error
return 0;
}
No entiendo por qué el error, echo en falta que C++ responda de manera más intuitiva.
Un saludo!