considerare il mio semplice esempio qui sotto:Curiosamente ricorrente modello di modello (CRTP) con constexpr statico Clang
#include <iostream>
template <typename T>
class Base
{
public:
static constexpr int y = T::x;
};
class Derived : public Base<Derived>
{
public:
static constexpr int x = 5;
};
int main()
{
std::cout << Derived::y << std::endl;
}
In g ++, questo compila bene e stampe 5
come previsto. In Clang, tuttavia, non riesce a compilare con l'errore no member named 'x' in 'Derived'
. Per quanto posso dire questo è il codice corretto. C'è qualcosa di sbagliato in quello che sto facendo, e se no, c'è un modo per avere questo lavoro in Clang?
domanda molto simile: http://stackoverflow.com/q/35759047/996886 – melak47
Se si inizializza 'y' al di fuori del' base' la classe funziona? –
@Ben non è possibile inizializzare un 'constexpr static int' al di fuori della classe. – melak47