Sto provando a far sì che la mia funzione template produca un errore in fase di compilazione se la versione base non specializzata è istanziata. Ho provato il solito schema di asserzione in fase di compilazione (dimensione array negativa) ma la compilazione ha esito negativo anche quando il modello non è istanziato. Qualche idea su come farlo fallire se e solo se la funzione template di base viene istanziata?Come imporre l'uso della specializzazione del modello?
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");
}
Dovrebbe essere solo 'static_assert' (una parola chiave, non una funzione di libreria). – UncleBens
corretto, grazie! – Useless