Lo standard dice, "Un membro di una classe T non può usare T come nome se il membro è un membro dati statici, una funzione membro, un tipo membro, un modello membro, un enumeratore di un'enumerazione senza ambito, un membro di un'unione anonima membro.Tuttavia, un membro di dati non statici può utilizzare il nome T purché non ci siano costruttori dichiarati dall'utente. "membro dati con il nome classe
Tuttavia, se creo questa classe, viene fornito un errore di compilazione.
class G
{
int G;
};
Sto usando VS2013. Non è consentito in Microsoft o?
Qual è l'errore di compilazione? Questo funziona con Clang e GCC. – Hamdor
I compilatori microsoft sono (in) famosi per la loro mancata conformità a qualsiasi tipo di standard. –
errore: C2380: tipo (s) precedente 'G' (costruttore con tipo di ritorno o ridefinizione illegale del nome corrente della classe?) Quindi, non lo consentono :( –