为什么智能指针没有转换操作符回到基指针?

Rod*_*ddy 2 c++ smart-pointers scoped-ptr

如果经常发现自己使用这样的代码:

boost::scoped_ptr<TFoo> f(new TFoo);

Bar(f.get());  // call legacy or 3rd party function : void Bar (TFoo *)
Run Code Online (Sandbox Code Playgroud)

现在,我认为智能指针可以轻松地将隐式转换运算符定义回"原始"指针类型,这将允许此代码仍然有效,并简化旧代码的"智能化"

Bar(f);
Run Code Online (Sandbox Code Playgroud)

但是,它们至少不是,而不是我发现的那些.为什么?

Nim*_*Nim 7

IMO隐式转换是c ++中所有邪恶的根源,也是追踪最棘手的错误之一.

不依赖它们是一种好习惯 - 你无法预测所有行为.