Paragraphe 7.3.3. des états standards 2003 C++ quiL'utilisation de la déclaration pour un membre de classe doit être une déclaration de membre (C++ 2003)
Using declaration for a class member shall be a member declaration.
Cela signifie que ce qui suit donne une erreur de syntaxe:
struct S1
{
static int var1;
};
using S1::var1;
Alors que le suivant compile bien:
namespace N2
{
int var2;
}
using N2::var2;
Quelqu'un sait-il la raison d'être (le cas échéant) derrière cela?
Encore plus, la norme donne un exemple explicite avec des données statiques membre de la structure et dit qu'il devrait provoquer une erreur de syntaxe. MS C++ donne cette erreur:
cpptest1.cxx(9) : error C2885: 'S1::var1': not a valid using-declaration at non-class scope
Il n'est pas encore clair pourquoi cela devrait être interdit.
Autre que _a struct is no namespace_? –
Quel est le message de l'erreur de syntaxe? – kol
Et quoi? Comment est-ce lié à la question? –