【发布时间】:2018-03-27 01:42:41
【问题描述】:
通常,全局范围内的using namespace 是considered as a bad practice。但是,根据cppreference,不以下划线(_)开头的标识符在用户定义文字的情况下保留给标准库。
用作将调用此函数的用户定义文字的 ud-suffix 的标识符。必须以下划线_开头:不以下划线开头的后缀是为标准库提供的文字运算符保留的。
这是否意味着我可以在全局范围内安全地执行using namespace std::literals;?
【问题讨论】:
-
我不确定“安全”是否正确。我不喜欢
using namespace。在我的所有#include指令之后,我总是选择我正在使用的特定标识符。using std::literals::string_literals::operator""s -
"通常,
using namespace在全局范围内被认为是一种不好的做法" - 不完全是。不好的做法是using namespace std,而不是using namespace。 -
@RemyLebeau 虽然链接的问题是关于
namespace std,但它不好的原因也适用于任何其他命名空间;命名空间的目的是防止名称冲突,using namespace打破它。 (链接问题的接受答案解释了这一点。)我的问题的重点是using namespace std::literals是否也会产生名称冲突。