Как я понял, концепции очень похожи на интерфейсы. Подобно интерфейсам, концепции позволяют определять некоторый набор методов / концепций / интерфейсов, которые реализация ожидает и должна выполнить для своей задачи.И те, и другие усиливают внимание к семантическим потребностям.
Хотя Бьярне и многие другие люди, похоже, рассматривают концепции как способ избавиться от использования enable_if и в целом сложных шаблонов, мне интересно, имеет ли смысл использовать его вместо интерфейсов/ pure абстрактные классы.
Преимущества очевидны:
- нет затрат времени выполнения (v-таблица)
- вид утки, потому что подходящие классы не имеютдля реализации интерфейса
- даже взаимосвязи между параметрами (которые интерфейсы вообще не поддерживают)
Конечно, недостаток не за горами:
- нет определения шаблонов для проверки концепций, по крайней мере, на данный момент
- …
Интересно, есть ли их больше, и в конце концов, не имеет ли это смысла.
Я знаю, что есть похожие вопросы, но они не являются специфическими для их цели, и на них нет ответа в ответе.Я также нашел других людей, которые придерживались той же идеи, но ни в коем случае не было кого-то, кто действительно поощрял / не одобрял это, не говоря уже об этом.