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