Рассмотрим a class A
, удовлетворяющий двум понятиям ConceptA
и ConceptB
. Пусть функция foo
перегружена для двух понятий:
void foo(ConceptA& arg);
void foo(ConceptB& arg);
A a;
fun(concept_cast<ConceptA>(a));
Примечание. В этом примере используется синтаксис "Тесная нотация", предложенный как часть N3701, §5
Есть ли что-то вроде concept_cast
, которое позволяет пользователям выбирать перегрузку?
Например:
Давайте скажем
ConceptA
говорит, что T должна иметь функцию-член bar()
ConceptB
говорит, что T должна иметь функцию-член baz()
и class A
имеет как bar()
, так и baz()
функцию-член
Его явно двусмысленный, но есть ли способ явно выбрать, как мы имеем static_cast
для нормальных перегрузок?
Обновить. Принятый ответ более 2 лет. Любое обновление в С++ 17?