次の引用の意味を理解しようとしています (3.4.3/3 N3797):
修飾 ID に続く名前は、メンバーのクラスまたは名前空間のスコープで検索されます。
namespace A
{
class C
{
public:
static const int a=7;
static int b;
};
}
int A::C::b=a; //7
のスコープは、の宣言ポイントが続く宣言領域のみstatic int b;
で構成されます。実際:b
クラスで宣言された名前の潜在的なスコープは、名前の宣言ポイントに続く宣言領域だけでなく、すべての関数本体、デフォルト引数、例外仕様、および 非静的のブレースまたはイコール初期化子からも構成されます。そのクラスのデータ メンバー
これstatic const int a=7;
は、 が のスコープに属していないことを意味しstatic int b;
ます。したがって、static const int a=7
は では見つかりませんint A::C::b=a;
。
それは標準のタイプミスですか、それとも私の誤解ですか?