Концепции великолепны для определения ошибки в строке кода, где «ограничение не было удовлетворено» . Перебрать к статику static_assert была именно такой возможностью. Использование: любая библиотека, которая хочет помочь пользователю выяснить, почему определенное выражение не удовлетворяло ограничения. Вы можете утверждать, что любой полугодный «пользователь» должен быть в состоянии выяснить заметку компилятора », потому что 'is_base_of ', оцененная на false» , но более пользовательская информация не может повредить. Будут более сложные концепции наверняка. < /P>
template
concept is_base_of = std::is_base_of_v;
template
struct BaseWrapper { };
int main()
{
class Base {};
class Derived : public Base {};
class C {};
using T1 = BaseWrapper;
using T2 = BaseWrapper; // fails right here, but a custom message would be nice
}
Подробнее здесь: https://stackoverflow.com/questions/635 ... essage-c20