Próbuję zrobić, aby moja funkcja szablonu generowała błąd podczas kompilacji, jeśli instancja nie specjalistyczna zostanie utworzona. Próbowałem zwykłego wzorca assert w czasie kompilacji (ujemny rozmiar tablicy), ale kompilacja nie działa, nawet jeśli szablon nie jest instancjonowany. Wszelkie przemyślenia na temat tego, jak sprawić, aby to się nie udało, tylko wtedy, gdy zostanie utworzona funkcja szablonu podstawowego?Jak wymusić stosowanie specjalizacji szablonów?
template<class Foo> void func(Foo x) {
// I want the compiler to complain only if this function is instantiated.
// Instead, the compiler is complaining here at the declaration.
int Must_Use_Specialization[-1];
}
template<> void func(int x) {
printf("Hi\n");
}
Powinien to być po prostu 'static_assert' (słowo kluczowe, a nie funkcja biblioteki). – UncleBens
Poprawione, dziękuję! – Useless