Supponendo che ho qualche modello di funzione F1:Come rilevare se una funz. è un constexpr? e contrassegna altre funzioni constexpr a seconda di esso?
template<typename f2>
int f1(int i, int j) noexcept {
return i + j + f2(i, j);
}
c'è modo per determinare se f2(i, j)
può essere un constexpr
. (non importa che sia una funzione o un functor) e quindi contrassegnare f1<f2>
come constexpr
troppo?
Sto pensando di utilizzare SFINAE qui in qualche modo, ma non ho trovato come rilevare constexpr
utilizzando type traits
Sono anche interessato a questo. A volte, vuoi sovraccaricare un algoritmo a seconda di 'constexpr'ness, perché un'implementazione dell'algoritmo è' constexpr'able ma un'altra è più veloce. – KABoissonneault
Inoltre, nota a lato ma: 'throw()' è deprecato, usa 'noexcept' se puoi (o rimuovilo dal tuo esempio, non è veramente rilevante per il tuo problema) – KABoissonneault
@KABoissonneault, grazie, usando 'throw() 'è solo un'abitudine. –