2016-09-30 12 views
0

リテラル演算子の範囲を制限する可能性はありますか?リテラル演算子の範囲を制限する方法

いくつかのポストフィックスを定義していくつか簡単に指定したいと思いますが、これは特定のクラスまたはその子クラスに直接接続されているものとの関連性があります。このクラスを使用する他のコードの名前空間は、この影響を受けてはなりません。

+1

名前空間の中に貼り付けて、必要なときに 'std :: literal :: chrono_literals'でchronoが何をするのかを' using name :: name :: morenames; 'を使ってください。 –

+0

@GillBates hm - 少なくともデフォルトでは隠しています。この名前空間を常にクラスのスコープ内に見えるようにする方法はありますか? –

答えて

1

名前空間を使用します。 wandbox example

namespace my_lits 
{ 
    int operator ""_aaa(const unsigned long long x) 
    { 
     return x + 1; 
    } 
} 

int main() 
{ 
    { 
     using namespace my_lits; 
     std::cout << 100_aaa << "\n"; 
    } 

    { 
     // Will not compile!!! 
     std::cout << 100_aaa << "\n"; 
    } 
} 

クラスのスコープ内で、この名前空間が常に見えるようにする方法はありますか?

名前空間をクラス内のスコープに入れることはできません。詳細については、thisの質問とthis other oneを参照してください。

さらに、UDLs cannot be declared in class scope

関連する問題