我正在使用<chrono>
编写一个简单的秒表模板。由于这些函数位于std::chrono
中,因此编写using namespace std::chrono
以避免膨胀我的代码行会很方便。但由于它是一个模板,因此std::chrono
将在包含该模板的所有文件中可见。
在这种情况下我该怎么办?我是否必须选择其中一个选项,或者是否有办法避免这两个选项的问题?
答案 0 :(得分:3)
您可以在代码中使用命名空间别名:
namespace bc = boost::chrono;
并使用
bc::duration d;
您可以将此别名放在所需的函数boost::chrono
中,这样它们就不会污染其他代码。
template<T>
class foo {
void bar() {
namespace bc = boost::chrono;
bc::duration d;
}
// namespace alias bc is no longer in scope.
}
或者,您可以将using namespace
放在模板/函数的范围内,但是,我认为这会降低可读性,并可能导致boost
和C++11
{之间发生冲突{1}}名称空间。
std