Допустим, я хочу использовать
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
Но я не хочу использовать
using namespace std;
Есть ли что-то вроде этого:
using std::{cout, cin, endl};
я пробовал
using std::{cout, cin, endl};
Вместо этого я получил синтаксическую ошибку.
Вы должны просто привыкнуть писать std::
как и большинство из нас. Поначалу это кажется беспорядком, но быстро вы начинаете находить утешение в том, что функция является стандартной, особенно когда менее часто используемые функции начинают внедряться в большую базу кода.
Просто используйте std::cout
, дополнительные несколько нажатий клавиш того стоят.
написание списка using std::cout; using std::...
занимает около 10 секунд, а время, необходимое для обдумывания алгоритма, может занять 10 часов, 10 дней и более. На самом деле стоимость ввода настолько незначительна, что хорошие кодовые базы никогда не используют using std::cout
или что-то подобное, а всегда печатают std::
целиком.
using std::cout, std::cin, std::endl;
@FrançoisAndrieux Это не «похоже» на беспорядок, это беспорядок. Конечно, есть веские причины для явного определения пространств имен, но только из-за этого давайте не будем упускать из виду тот факт, что пространства имен в C++ вносят объективный беспорядок, который оказывает конкретное негативное влияние на читабельность. И одним из конкретных негативных последствий этого является то, что пространства имен в C++ почти всегда плоские (чтобы сохранить управляемость влияния на читабельность), несмотря на тот факт, что вложенные пространства имен могут быть (и в других языках являются) ценным инструментом для организации API. .
Я перечисляю элементы в пространстве имен при написании теста, и мне нужны маршеры из gmock, и я не нахожу это болезненным или раздражающим. using testing::IsNull; ...
и при составлении маршеров неплохо отказаться от пространства имен.
Кстати, что еще, по вашему мнению, вы должны внести в глобальное пространство имен с помощью using std::...
? Обратите внимание, что есть поиск, зависящий от аргумента (ADL), который удобен и довольно часто делает std::
ненужным. Например getline(std::cin, s)
.
Начиная с С++ 17, вы можете добавлять несколько объектов в using
через запятую.
using std::vector, std::cout, std::cin;
Раньше для каждого требовался отдельный оператор using
. См. декларацию использования. Вы должны указать полный путь для каждого объявления.
Нет, такого синтаксиса нет.