cfa*_*771 7 c++ explicit-constructor initializer-list c++11
我可以使用显式的init-list ctor来确保像{a}这样的表达式不会导致意外的隐式转换吗?而另一个想法:应该我担心呢?写作{a}不太可能是简单的错误a,但另一方面,我们通过隐式转换构建对象的代码仍然可能不清楚.
class Foo
{
explicit Foo (std::initializer_list<Bar> ilist) { /*...*/}
};
Run Code Online (Sandbox Code Playgroud)
你不能。它确实会导致意外的隐式转换。
但是,意外的隐式转换是不允许的,编译器将拒绝您的程序。然而,这并不能阻止编译器选择或考虑它。例子
void f(Foo);
void f(std::vector<Bar>);
int main() {
// ambiguous
f({bar1, bar2, bar3});
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2398 次 |
| 最近记录: |