Saya mencoba memahami aturan bagian 3.4.3.2/3 dari draf kerja akhir N3797 c++14:
Diberikan X::m (di mana X adalah namespace yang dideklarasikan pengguna), atau diberikan ::m (di mana X adalah namespace global), jika S(X, m) adalah himpunan kosong, maka program akan salah bentuk. Sebaliknya, jika S(X, m) mempunyai tepat satu anggota, atau jika konteks acuannya adalah deklarasi penggunaan (7.3.3), S(X, m) adalah himpunan deklarasi m yang diperlukan. Sebaliknya, jika penggunaan m tidak memungkinkan deklarasi unik dipilih dari S(X, m), program akan salah bentuk.
Saya telah menulis kode berikut:
inline namespace A
{
int i = 42;
};
namespace B
{
static const int i = 5;
};
using B::i;
int g= ::i //S(X, i)={using B::i, A::i}
int main() { }
Seperti yang dikatakan dalam kutipan yang dikutip di atas, kita memiliki:
[...]jika S(X, m) adalah himpunan kosong[...]
S(X,m) tidak kosong, selanjutnya:
Sebaliknya, jika S(X, m) mempunyai tepat satu anggota
tidak benar, lebih lanjut:
atau jika konteks referensinya adalah deklarasi penggunaan
Saya tidak mengerti bagaimana batasan itu diperiksa pada contoh saya. Saya ingin memahami bagaimana konteks referensi ditentukan bergantung pada penggunaan referensi itu?