Изучаю 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"
При этом аналогичное использование точно такой же функции не члена класса успешно компилируется.
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Не получается правильно сконструировать класс для статической инициализации map<T1,T2>, ругается на синтаксис и просит точку с запятой там...
Выдает ошибку Microsoft C++ exception: std::out_of_range at memory location Как я поняла, то ошибка в последней функции replaceНо что именно не так, не вижу