Betrachten Sie eine class A
erfüllt zwei Konzepte ConceptA
und ConceptB
. Lassen Sie eine Funktion foo
für die beiden Konzepte überlastet:Was entspricht dem Cast für Konzepte?
void foo(ConceptA& arg);
void foo(ConceptB& arg);
A a;
fun(concept_cast<ConceptA>(a));
Hinweis: Dieses Beispiel verwendet die „Terse Notation“ Syntax als Teil N3701 vorgeschlagen, §5
Gibt es existieren so etwas wie concept_cast
die Benutzer können die Überladung auswählen?
ZB: Lets sagen ConceptA
sagt T eine Elementfunktion bar()
ConceptB
haben muss, sagt T eine Mitgliedsfunktion baz()
und class A
beide bar()
und baz()
Memberfunktion
Seine eindeutig zweideutig hat haben, aber Gibt es eine Möglichkeit, explizit auszuwählen, wie wir static_cast
für normale Überlasten haben?
Aktualisieren: Akzeptierte Antwort ist mehr als 2 Jahre alt. Irgendein Update in C++ 17?
Vielleicht ist das eine mehrdeutige Überlastung in erster Linie zu definieren? Ich bin daran interessiert, die richtige Antwort zu hören. – David
Ist das nicht 'static_cast'? Angenommen, "a" wird sowohl von "ConceptA" als auch von "ConceptB" abgeleitet. –
@ JonathanPotter 'static_cast' in was ?. Ist es möglich, 'static_cast' in ein' Concept' zu verwandeln? – balki