考虑 aclass 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 年。c++17有什么更新吗?