Почему этот код:
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
в -10_deg
считается целым числом.
добавлять .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;
}
заставляет это работать.