{
static_assert(std::is_base_of_v<Base, Derived>);
}
...
};
struct D : Base<D> {};
В каждом методе Base такой ассерт, чтобы проверить реальность CRTP
То есть таких static assert'ов N — на количество методов
Как сделать так, чтобы не писать эти ассерты в каждом методе, а написать только раз?
Просто в теле написать нельзя, так как на момент этого ассерта Derived будет incomplete
А нафига здесь Derived как параметр шаблона? Почему не классическое наследование?
Концепты?
С++17 Если бы был С++20, то вопрос бы даже не стоял)
Тогда зачем тебе static_assert, ты же в каждом будешь вызывать static_cast<T*>(this)
1. Там несколько статик_ассертов, там ещё доп проверки есть, связанные с предметной областью 2. С статик_ассертом ошибка понятнее
Ну тогда проверки запихни в свой cast метод
сделай my_static_cast, который возвращает результат static_cast и туда же запихни ассерты
Обсуждают сегодня