Изучаю C++, полез в constexpr, но почти сразу наткнулся на странности.
У меня есть класс Date, который хранит дату, у него есть метод
static bool isLeapYear(unsigned short),
к которому я попробовал добавить constexpr, таким образом:
Объявление
class Date{
// ...
constexpr static bool isLeapYear(unsigned short);
// ...
};
Определение
constexpr bool Date::isLeapYear(ushort year)
{
return year % 4 == 0;
}
Попытка использования
constexpr bool p = Date::isLeapYear(2000);
Ругань компилятора
1>c:\...\main.cpp(13): error C2131: выражение не определяется константой
1>c:\...\main.cpp(13): note: сбой был вызван неопределенной функцией или функцией, не объявленной как "constexpr"
1>c:\...\main.cpp(13): note: см. использование "Date::isLeapYear"
При этом аналогичное использование точно такой же функции не члена класса успешно компилируется.
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники