数字字面值操作符错误
Numeric literal operator error
为什么这个代码:
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
标志).
似乎GCC不使用用户定义的文字进行类型转换,因此,例如-10_deg
中的-10
被认为是一个整数。
将.0
添加到所有数字中,它应该可以工作:
static const float ANGLES[] = {-20.0_deg, -10.0_deg, 0.0_deg, 10.0_deg, 20.0_deg};
当然,您也可以添加另一个以int
为参数的运算符函数
添加定义
constexpr float operator "" _deg(unsigned long long d) {
// returns radians
return d*3.1415926535/180;
}
相关文章:
- 在重载的全局new操作符中使用静态对象会导致核心转储运行时错误
- 无异常的c++操作符重载错误检查
- Assert()函数抛出一个错误——操作符有问题
- c++操作符string和char*导致歧义错误
- 模板结构中的友元操作符引发重定义错误
- 指针上的操作符=可能导致mac上的分段错误
- 错误:没有找到接受右QUdpSocket的操作符
- 内部编译器错误-开关表达式中的模板化转换操作符
- c++中重载*操作符编译错误
- 重载操作符类型错误
- 赋值操作符重载:错误处理场景
- const_iterator上的间接操作符错误
- 使用重载复合赋值操作符时的运行时错误
- 类型转换操作符重载——Visual studio 2013内部错误
- 显式操作符bool未在lambda内部调用- MSVC错误
- 派生类操作符=错误
- I/O流操作符和前/后递增/递减操作符重载错误
- Boost::bind重载操作符导致Boost未定义引用错误
- 遇到错误:没有匹配操作符[]
- 错误:操作符重载++/——等时需要左值