xml*_*lmx 10 c++ visibility namespaces user-defined-literals c++11
#include <chrono>
namespace X
{
using namespace std;
struct A
{
std::chrono::seconds d = 0s; // ok
};
}
namespace Y
{
struct B
{
std::chrono::seconds d = 0s; // error
};
}
Run Code Online (Sandbox Code Playgroud)
错误信息是:
错误:没有匹配的文字运算符用于调用具有 'unsigned long long' 或 'const char *' 类型参数的 'operator""s',并且没有匹配的文字运算符模板 std::chrono::seconds d = 0s;
我的问题是:
我不想use namespace std;
进去namespace Y
;那么,我应该如何使其std::operator""s
可见namespace Y
?
Nat*_*ica 12
如果你想拥有所有的计时文字,那么你可以使用
using namespace std::chrono_literals;
Run Code Online (Sandbox Code Playgroud)
如果你只是想要,operator""s
那么你可以使用
using std::chrono_literals::operator""s;
Run Code Online (Sandbox Code Playgroud)
请注意,至少在coliru gcc 上对上述行发出警告,但 clang 没有。对我来说应该没有警告。我在使用保留标识符时应使用命令发出警告吗?