我可以直接在表达式中使用 namespace::user-defined-literals 吗
Can I use a namespace::user-defined-literals directly in an expression
是否可以在不写 using namespace xxx;
的情况下编写用户定义的文字。像 <literal value><namespace>::<UDL>;
例如
namespace tostr
{
std::string operator "" _UP(const char *str, unsigned long long int)
{ //transformation goes here
}
}
int main(int argc, char** argv)
{
//using namespace tostr;
//std::string upperCase = "hello world.\n"_UP; //OK : Works perfectly.
//Something like this
std::string upperCase = "hello world.\n"tostr::_UP; //????
}
不,根据 C++14 标准,§13.5.8(不知道 C++11 中是否存在),您不能在没有 using 声明的情况下使用命名空间文字运算符。
如果你想限制 using 声明的效果(例如,如果你想使用来自不同命名空间的相同名称的文字),你应该为此使用 {}
范围。
是否可以在不写 using namespace xxx;
的情况下编写用户定义的文字。像 <literal value><namespace>::<UDL>;
例如
namespace tostr
{
std::string operator "" _UP(const char *str, unsigned long long int)
{ //transformation goes here
}
}
int main(int argc, char** argv)
{
//using namespace tostr;
//std::string upperCase = "hello world.\n"_UP; //OK : Works perfectly.
//Something like this
std::string upperCase = "hello world.\n"tostr::_UP; //????
}
不,根据 C++14 标准,§13.5.8(不知道 C++11 中是否存在),您不能在没有 using 声明的情况下使用命名空间文字运算符。
如果你想限制 using 声明的效果(例如,如果你想使用来自不同命名空间的相同名称的文字),你应该为此使用 {}
范围。