< p > 给定
struct E
{
};
struct P
{
explicit P(E) {}
};
struct L
{
operator E() {return {};}
operator P() {return P{E{}};}
};
根据C++17语言标准,表达式P{L{}}
是否应该编译?不同的编译器产生不同的结果:gcc(trunk):可以编译;gcc 8.3:错误(重载不明确);gcc 7.4:可以编译;clang(trunk):可以编译;clang 8.0.0:可以编译;clang 7.0.0:可以编译;msvc v19.20:错误(重载不明确);icc 19.0.1:错误(存在多个构造函数实例匹配)。