如何使用基于范围的for循环与std :: weak_ptr

Mar*_* A. 1 for-loop c++11

你可以使用带有std :: weak_ptr的C++ 11基于范围的for循环,而不是使用带lambda的for_each,如下所示?

std::vector<std::weak_ptr<IObservable>> observers;

std::for_each(this->observers.cbegin(), this->observers.cend(),
[](const std::weak_ptr<IObservable>& _o)
{
    auto observer = _o.lock();
    if (observer)
    {
       observer->Notify()
    }
});
Run Code Online (Sandbox Code Playgroud)

Mas*_*ssa 5

我不明白为什么不.你收到任何错误信息吗?

这个:

for( const auto& o: observers ) {
  if( auto observer = o.lock() ) {
    observer->Notify();
  }
}
Run Code Online (Sandbox Code Playgroud)

应该工作正常......:D