2012-12-03 15 views
2

我玩弄用户定义文字(与GCC 4.7)。整数值应该传递给浮点用户定义的文字吗?

double operator"" _lb(long double n) 
{ 
    return n * 0.453592; // convert pounds to kilos 
} 

传递时一个浮点字面也能正常工作(如42.0_lb),但是当我试图通过一个整数文字(如42_lb)我得到以下错误:

error: unable to find numeric literal operator 'operator"" _lb'

不应该我的_lb的定义会导致参数与long double之间的隐式转换(与常规函数一样)?

回答

4

不,这种隐式转换不适用于这种情况。根据[lex.ext] p3,用户定义的intergal文字只能由采用unsigned long long的文字运算符或原始文字运算符(需要const char*)或文字运算符模板处理。

+0

@Motti [N3337](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3337.pdf)也有我引用的文字。 (来自[wikipedia]的链接(http://en.wikipedia.org/wiki/C%2B%2B11))。 – Angew

+0

谢谢,我现在看到它。 – Motti

相关问题