Изучаю 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"
При этом аналогичное использование точно такой же функции не члена класса успешно компилируется.
Продвижение своими сайтами как стратегия роста и независимости