При компиляции этого кода (без какого-либо заголовка)Ошибка компиляции при использовании члена определенного пользователя буквального
template <typename T>
struct Temperature {
T temp;
explicit Temperature(T t)
: temp(t)
{}
};
Temperature<long double> operator "" _f (long double t)
{
return Temperature<long double>((t - 32)/1.8);
}
int main()
{
auto t = 100.0_f;
t.temp;
100.0_f.temp; // ERROR AT THIS LINE
return 0;
}
составителей (как G ++ 4.8 и лязг ++ 3.4 на Ubuntu 14.04) будут жаловаться, что
error: unable to find numeric literal operator ‘operator"" _f.temp’
100.0_f.temp;
^
Кажется, что _f.temp
рассматривается как суффикс. Почему компиляторы разбирают это так, вместо того, чтобы останавливаться на точке?
Максимальный жеватель. '100.0_f.temp' - действительный токен * pp-number *. –
Изменить на '(100.0_f) .temp' – Mine
@ T.C. Не знаю, что токен pp-номера может содержать более одной точки. Не могли бы вы показать мне пример в такой форме? – neuront