Рассмотрим 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?