В C++ есть замечательная особенность: компилятор не позволит вам забыть реализовать чисто виртуальный метод в подклассе. Но что, если я хочу, чтобы пользователь моего абстрактного базового класса реализовал хотя бы один из нескольких возможных виртуальных методов?
Я работаю с libhttpserver и создаю подкласс объекта http_resource. Таким образом, подкасса может захотеть отвечать только на запросы POST, и в этом случае она будет переопределять render_POST, а другая может отвечать только на GET, переопределяя render_GET . Сам http_resource предоставляет реализации по умолчанию для каждого члена render_*METHOD*, который, в свою очередь, вызывает общий метод render. Это функционально, но не помогает разработчику помнить, что хотя бы один из них должен быть переопределен, чтобы что-то произошло.
Существует ли такая вещь, как синтаксис, чтобы заставить компилятор применять такое правило? «Вам нужно сделать хотя бы одно из этих действий, но не имеет значения какое».
Этот вопрос очень близок к той же идее, но специфичен для C++11, и автор вопроса ориентирован конкретно на переопределенные методы.
Подробнее здесь: https://stackoverflow.com/questions/798 ... al-methods