我不想在给定的函数中包含整个命名空间,而是只包含我将要使用的东西,例如:
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 ...;
)?
答案 0 :(得分:7)
我想要的东西目前似乎不可能。但是,来自en.cppreference.com:
具有多个using-declarator的using声明等效于使用一个using-declarator的using声明的相应序列。 (自C ++ 17起)
使用以下示例:
namespace X {
using A::g, A::g; // (C++17) OK: double declaration allowed at namespace scope
}
这似乎表明将来有可能。