是否应将整数值传递给浮点用户定义的文字?

时间:2012-12-03 10:23:36

标签: c++ c++11 implicit-conversion user-defined-literals

我正在使用用户定义的文字(使用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之间的隐式转换(与常规函数一样)?

1 个答案:

答案 0 :(得分:4)

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