краткий синтаксис для пространства имен c ++ - PullRequest
2 голосов
/ 12 февраля 2020

Интересно, можно ли более кратко написать следующее длинное использование пространства имен:

#include <iostream>
#include <iomanip>

using std::ostream;
using std::cout;
using std::endl;
using std::ios;
using std::setw;
using std::setfill;
using std::hex;

скажем:

using std::{ostream,cout,endl,ios,setw,setfill,hex}; // hypothetically, of course

1 Ответ

4 голосов
/ 12 февраля 2020

Вы можете написать

using std::ostream, std::cout, std::endl, std::ios, std::setw, std::setfill, std::hex;

при условии, что ваш компилятор поддерживает стандарт C ++ 17.

Что касается меня, то я советую использовать квалифицированные имена вместо неквалифицированных имен, введенных с помощью объявлений. Неквалифицированные имена могут запутать читателей кода и стать причиной неясностей.

Например, если читатель кода встретит имя hex, он будет сбит с толку, будь то стандартный манипулятор std::hex или определяемое пользователем имя.

Обычно с помощью объявлений используются для введения перегруженных функций в заданную область или для создания видимых имен членов базовых классов.

...