Я пытаюсь понять правило раздела 3.4.3.2/3 окончательного рабочего проекта N3797 С++ 14:
Если задано X::m (где X — пространство имен, объявленное пользователем) или задано ::m (где X — глобальное пространство имен), если S(X, m) — пустое множество, программа некорректна. В противном случае, если S(X, m) имеет ровно один элемент или если контекстом ссылки является использование-объявления (7.3.3), S(X, m) является требуемым набором объявлений m. В противном случае, если использование m не позволяет выбрать уникальное объявление из S(X, m), программа некорректна.
Я написал следующий код:
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() { }
Как сказано в приведенной выше цитате, мы имеем:
[...] если S(X, m) — пустое множество[...]
S(X,m) непусто, далее:
В противном случае, если S(X, m) имеет ровно один элемент
неверно, далее:
или если контекст ссылки является декларацией использования
Я не понимаю, как это ограничение проверяется для моего примера. Я хотел бы понять, как определенный контекст ссылки зависит от использования этой ссылки?