5

Clang 3.1は、ユーザー定義のリテラルをサポートすると主張しています。私はこれを定義することができます:

int operator"" _tryit(long double n) { return int(n); }

しかし、それを使おうとすると、エラーが発生します。

int m = 5_tryit;

'_tryit'整数定数のサフィックスが無効です

4

1 に答える 1

7

5あなたの場合、暗黙的に a に変換することはできませんlong double5.0暗黙的な変換が機能するようにするには、これを long double にするか、関数を自分で明示的に呼び出す必要があります。

int m = 5.0_tryit;

また

int n = operator"" _tryit(5);

(両方でテスト済みclang version 3.1 (trunk) (llvm/trunk 155821)

このSOの質問には、ルールの適切な説明があります。

(また、abarnert が言及しているよう-std=c++11に、コンパイル時にコンパイラにフラグを渡していることを確認してください)。

于 2012-06-04T23:38:29.550 に答える