cpp-ru / ideas

Идеи по улучшению языка C++ для обсуждения
https://cpp-ru.github.io/proposals
Creative Commons Zero v1.0 Universal
91 stars 0 forks source link

Перечисление пространств имён через запятую после using namespace #581

Open daniilrozanov opened 1 year ago

daniilrozanov commented 1 year ago

Вместо того, чтобы тратить строчки с несколькими using namespace X, предлагается разрешить после директивы using namespace перечислять пространства имён через запятую.

Пример:

// ...
void foo() {
  // using namespace ranges;
  // using namespace ranges::view;
  using namespace ranges, ranges::view;
  sort(arr, my_cmp); // ranges::sort
  for (X& x : arr | filter(&filters::even, &X::number)) // ranges::view::filter
    std::cout << x << std::endl;
}
eoan-ermine commented 1 year ago

using с C++17 поддерживает перечисление имен. Синтаксис using namespace в связи с этим выглядит асимметрично. Интересно, по какой причине вместе с using не завезли и using namespace.

daniilrozanov commented 1 year ago

using с C++17 поддерживает перечисление имен. Синтаксис using namespace в связи с этим выглядит асимметрично. Интересно, по какой причине вместе с using не завезли и using namespace.

Видимо забыли

AndreyG commented 11 months ago

Нет, не забыли. Мотивацией для using-declarator-s была возможность использовать pack expansion (https://wg21.link/p0195), а вовсе не возможность сэкономить 5 букв на написание слова using. Для using-directive-s такой мотивации нет.