¿Es de alguna manera posible? Quiero que para habilitar el paso de argumentos en tiempo de compilación. Supongamos que es solo para comodidad del usuario, ya que uno siempre puede escribir el tipo real con template<class T, T X>
, pero para algunos tipos, es decir, funciones de puntero a miembro, es bastante tedioso, incluso con decltype
como acceso directo. Considere el siguiente código:¿Es posible emular la plantilla <auto X>?
struct Foo{
template<class T, T X>
void bar(){
// do something with X, compile-time passed
}
};
struct Baz{
void bang(){
}
};
int main(){
Foo f;
f.bar<int,5>();
f.bar<decltype(&Baz::bang),&Baz::bang>();
}
¿Sería de alguna manera posible convertirlo a lo siguiente?
struct Foo{
template<auto X>
void bar(){
// do something with X, compile-time passed
}
};
struct Baz{
void bang(){
}
};
int main(){
Foo f;
f.bar<5>();
f.bar<&Baz::bang>();
}
@GMan: Actualizado, espero que tenga más sentido ahora. :) – Xeo