Следующий заданный пользователем литерал пропускает ошибку:
constexpr double operator "" _kg(double q)
{
return q*1000;
}
но если добавлено long
, ошибка исчезнет, и код будет работать следующим образом:
constexpr double operator "" _kg(long double q)
{
return q*1000;
}
ошибка:
‘constexpr double operator""_kg(double)’ has invalid argument list
Проблема вызвана только аргументом, а тип возврата может быть double
без long
.
Почему нужен long
?