【发布时间】:2015-02-25 21:17:07
【问题描述】:
我读过,当您在 c++ 中使用 swap 时,您应该始终使用 using std::swap;,然后调用不合格的 swap,因此它会自动为 std:: 和内置类型选择 std:: ,用于自定义类型的自定义类型,以及用于其他所有内容的模板化 std::。
那么,我可以将using std::swap; 放在每个文件包含的标题中而不必担心吗?
我知道在标题中避免 using 是常见的做法。但是,在这种特殊情况下是否有问题?
【问题讨论】:
-
@aruisdante 不,不是。 OP 正在询问一种特定的用法。
-
@Pradhan 我认为,一种特殊的用法不会使使用
using污染全局命名空间更有效。 -
@aruisdante 可能,如果确实调用
swap而不将std::swap引入当前范围几乎总是一个错误。这就是OP有效地要求的。所以这使得另一个问题不再重复。请注意,我并不是在表达对这种做法的看法 - 只是指出对于这个问题可能会有一个更细微的答案。 -
你可以在头文件中使用它,只要你在函数内部,在头文件中使用它,这样它的作用域就限制在那个函数中。这是一种常见的做法。您应该不将它放在头文件中的文件范围内。
标签: c++ namespaces argument-dependent-lookup