Zakładając mam jakiś szablon funkcja F1:Jak wykryć, czy func. to jest constexpr? i zaznacz inne funkcje. constexpr w zależności od tego?
template<typename f2>
int f1(int i, int j) noexcept {
return i + j + f2(i, j);
}
Czy istnieje sposób, aby ustalić, czy f2(i, j)
może być constexpr
. (bez względu na to, czy jest to func, czy funktor) i dlatego też oznaczacie f1<f2>
jako constexpr
?
mam na myśli używając SFINAE tutaj trochę jak, ale nie znaleźliśmy sposobu wykrywania constexpr
użyciu type traits
Jestem również zainteresowany tym. Czasami chcesz przeciążyć algorytm w zależności od 'constexpr', ponieważ jedna implementacja algorytmu jest' constexpr'able, ale inna jest szybsza. – KABoissonneault
Również notatka boczna, ale: 'throw()' jest przestarzałe, użyj 'noexcept', jeśli możesz (lub usunąć go z twojego przykładu, to naprawdę nie jest istotne dla twojego problemu) – KABoissonneault
@KABoissonneault, dziękuję, używając 'throw() "to tylko nawyk. –