use
применяется к пространству имен, в котором оно было объявлено. Таким образом, ваш первый пример означает, " Для кода в пространстве имен A
, C
означает \B\C
, " и ваш код находится в пространстве имен A
, поэтому псевдоним срабатывает. Ваш второй пример означает: « Для кода без пространства имен, C
означает \B\C
, », но ваш код находится в пространстве имен A
, поэтому псевдоним не срабатывает. Это может помочь вам подумать о следующих примерах:
namespace A {
use B\C;
C::bar();
}
И:
use B\C;
namespace A {
C::bar();
}