考虑 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有什么更新吗?