// shand/to_weak.hpp #include <boost/config.hpp> #include <memory> namespace shand { template <class T> std::weak_ptr<T> to_weak(const std::shared_ptr<T>& sp) BOOST_NOEXCEPT { return sp; }
C++14から入った、ラムダ式のキャプチャでの初期化で使用する。
#include <iostream> #include <memory> #include <shand/to_weak.hpp> int main() { std::shared_ptr<int> sp(new int(3)); auto f = [wp = shand::to_weak(sp)] { // これ if (std::shared_ptr<int> sp = wp.lock()) { std::cout << *sp << std::endl; } }; f(); }
出力:
3