Использование объявления для члена класса должно быть объявлением члена (C ++ 2003)
Пункт 7.3.3. стандарта C ++ 2003 гласит, что
Using declaration for a class member shall be a member declaration.
Это означает, что следующее дает синтаксическую ошибку:
struct S1
{
static int var1;
};
using S1::var1;
Пока следующее компилируется нормально:
namespace N2
{
int var2;
}
using N2::var2;
Кто-нибудь знает обоснование (если таковое имеется) за этим?
Более того, стандарт дает явный пример со статическими данными члена структуры и говорит, что это должно вызвать синтаксическую ошибку. MS C ++ выдает эту ошибку:
cpptest1.cxx(9) : error C2885: 'S1::var1': not a valid using-declaration at non-class scope
До сих пор не ясно, почему это должно быть запрещено.