Следующий заданный пользователем литерал пропускает ошибку:
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?