aが と のclass A
2 つの概念を満たすConceptA
としConceptB
ます。foo
2 つの概念のために関数をオーバーロードします。
void foo(ConceptA& arg);
void foo(ConceptB& arg);
A a;
fun(concept_cast<ConceptA>(a));
注: この例では、 N3701、 §5の一部として提案されている「Terse Notation」構文を使用しています。
concept_cast
ユーザーがオーバーロードを選択できるようなものはありますか?
例:
ConceptA
T にはメンバー関数が必要であり、bar()
ConceptB
T にはメンバー関数が必要baz()
であり、とメンバー関数class A
の両方があるとします。bar()
baz()
static_cast
明らかにあいまいですが、通常のオーバーロードのように明示的に選択する方法はありますか?
更新:受け入れられた回答は2年以上前のものです。c++17 の更新はありますか?