В моем предыдущем вопросе я хотел использовать static_assert, чтобы ограничить параметр шаблона определенным подтипом. На вопрос был дан ответ, код для архивирования выглядит следующим образом:
template
struct X {
static_assert(std::is_base_of::value,"T must be derived from Y!");
};
Теперь я хочу сделать сообщение об ошибке более кратким. То есть я хочу указать, какой тип нарушает это ограничение. Например, если класс A
не является производным от Y
и кто-то создает экземпляр X
, тогда сообщение об ошибке должно печатать «Параметр типа должен быть производным от Y, но Aнет".
Это как-то достижимо со стандартной библиотекой?
Я вижу две проблемы: