Dato un modellomodello Specializzarsi sulla base di positività di argomentazione
template <int n>
void f(){...};
So che posso specializzare per valori specifici di n
facendo:
template <>
void f<2>(){...};
Ma, c'è un metodo che mi permette specializzarlo per tutto il positivo n
?
ho pensato di fare la seguente
template <int n>
void f<n>(){
int dummy[n]; //invalid for n < 0
...
};
Così per n<0
questo codice non è valido e il compilatore dovrebbe ricorrere alla definizione precedente. Sfortunatamente, tutto ciò che ottengo è un errore redefinition of 'void f<n>()'
.
Nota: immagino che probabilmente non è supportato dallo standard. Sto chiedendo se non c'è qualche metodo (forse qualche metaprogramma del modello) per ottenere questo effetto.
Questione di stile, ma preferisco inserire 'enable_if' nel tipo restituito, quindi non c'è un parametro magico che gira attorno a cose confuse (gli utenti e il tipo di funzione). – GManNickG