2017-08-17 6 views
1

using namespace xxx;を書かずにユーザー定義のリテラルを書くことは可能ですか?例えば<literal value><namespace>::<UDL>; ような何か式の中でnamespace :: user-defined-literalsを直接使用することはできますか

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; //???? 
} 
+0

試しましたか? – DeiDei

答えて

2

(これはC++ 11の中に存在する場合は知らん)いいえ、あなたは§13.5.8、C++ 14標準に従って使用して宣言することなく、名前空間リテラル演算子を使用することはできません。

使用する宣言の効果を制限したい場合(たとえば異なる名前空間の同じ名前のリテラルを使用する場合)は、{}スコープを使用する必要があります。

+0

タンクyou @ f1u77y –