Eri*_*ric 9 c++ user-defined-literals c++11
为什么这段代码:
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};
Run Code Online (Sandbox Code Playgroud)
产生以下5个错误:
错误:无法找到数字文字运算符'operator""_deg'
我正在使用GCC 4.7.3.(arm-none-eabi-g++带-std=c++0x旗帜).
Som*_*ude 10
似乎GCC不使用用户定义的文字进行类型转换,因此例如-10in -10_deg被认为是整数.
添加.0到所有数字,它应该有希望工作:
static const float ANGLES[] = {-20.0_deg, -10.0_deg, 0.0_deg, 10.0_deg, 20.0_deg};
Run Code Online (Sandbox Code Playgroud)
当然,您还可以添加另一个运算符函数int作为参数.
添加定义
constexpr float operator "" _deg(unsigned long long d) {
// returns radians
return d*3.1415926535/180;
}
Run Code Online (Sandbox Code Playgroud)
使它工作.
| 归档时间: |
|
| 查看次数: |
12711 次 |
| 最近记录: |