Czy to jakoś możliwe? Chcę, aby to umożliwić przekazywanie argumentów podczas kompilacji. Załóżmy, że jest to tylko dla wygody użytkownika, ponieważ zawsze można wpisać prawdziwy typ za pomocą template<class T, T X>
, ale w przypadku niektórych typów, tj. Funkcji wskaźnik-do-członka, jest to bardzo uciążliwe, nawet z decltype
jako skrótem. Rozważmy następujący kod:Czy można emulować szablon <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>();
}
Czy można go w jakiś sposób przekonwertować na następujące?
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: Zaktualizowano, mam nadzieję, że teraz ma to więcej sensu. :) – Xeo