为什么这段代码:
constexpr float operator "" _deg(long double d) {
// returns radians
return d*3.1415926535/180;
}
static const float ANGLES[] = {-20_deg, -10_deg, 0_deg, 10_deg, 20_deg};
产生以下5个错误:
错误:无法找到数字文字运算符'operator“”_deg'
我正在使用GCC 4.7.3。 (arm-none-eabi-g++
,-std=c++0x
标志)。
答案 0 :(得分:10)
GCC似乎没有使用用户定义的文字进行类型转换,例如-10
中的-10_deg
被视为整数。
将.0
添加到所有数字中,它应该可以正常工作:
static const float ANGLES[] = {-20.0_deg, -10.0_deg, 0.0_deg, 10.0_deg, 20.0_deg};
当然,您还可以添加另一个以int
为参数的运算符函数。
答案 1 :(得分:7)
添加定义
constexpr float operator "" _deg(unsigned long long d) {
// returns radians
return d*3.1415926535/180;
}
让它发挥作用。