我可以直接在表达式中使用 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 声明的效果(例如,如果你想使用来自不同命名空间的相同名称的文字),你应该为此使用 {} 范围。