我正在使用用户定义的文字(使用GCC 4.7)。
double operator"" _lb(long double n)
{
return n * 0.453592; // convert pounds to kilos
}
这在传递浮点文字(例如42.0_lb
)时工作正常但是当我尝试传递整数文字(例如42_lb
)时,我收到以下错误:
错误:无法找到数字文字运算符'运算符"" _lb'
我的_lb
定义是否导致参数与long double
之间的隐式转换(与常规函数一样)?
答案 0 :(得分:4)
不,这种隐式转换在这种情况下不适用。根据[lex.ext] p3,用户定义的intergal-literal只能由采用unsigned long long
的文字运算符或原始文字运算符(采用const char*
)或文字运算符处理模板。