2017-02-16 20 views
4

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

void doStuff() { 
    using std::sin; 
    using std::cos; 
    ... 
    // do stuff 
} 

Иногда этот список растет больше. Я хотел, чтобы похудеть вниз к следующему (подобно тому, как это возможно с объявлениями переменных):

void doStuff() { 
    using std::sin, std::cos; 
    // do stuff 
} 

я с удивлением обнаружил, что это не возможно (error: expected ';' after using declaration). Есть ли причина, почему так определяется using? Есть ли другой способ включить несколько функций из заданного пространства имен в целом (кроме using namespace ...;)?

+3

В какой-то момент использование '' '' '' '' '' '' больше, чем 'std ::', вы позволяете себе пропустить. – Barry

+0

@Barry Все зависит от того, сколько раз я использую включенные функции после;) Но да, действительно! Я обычно делаю это только в математических функциях, где все время постепенно созидается визуально. Приятно, чтобы все эти «::» были в стороне. – pingul

+1

Не так хорошо, как то, что вы делаете, а в области функций вы можете использовать 'using namespace std;'. Лично, хотя я просто использую 'std ::' всюду. – NathanOliver

ответ

4

То, что я хочу, кажется, не представляется возможным в настоящее время. Тем не менее, из en.cppreference.com:

А с использованием декларация с более чем одним использованием описателя-эквивалентно соответствующей последовательности с использованием деклараций с одним использованием-описателя. (с C++ 17)

на следующем примере:

namespace X { 
    using A::g, A::g; // (C++17) OK: double declaration allowed at namespace scope 
} 

Это наводит на мысль, что это может быть возможно в будущем.

 Смежные вопросы

  • Нет связанных вопросов^_^