(C++) StdUnique\_ptrExample2
January 11, 2018 · View on GitHub
(C++) StdUnique_ptrExample2



std::unique_ptr example 2: custom deleter is a std::unique_ptr example that shows how to use a custom deleter (in this case boost::checked_delete) with auto and std::function
Technical facts
Operating system(s) or programming environment(s)
Lubuntu 15.04 (vivid)
Qt Creator 3.1.1
- G++ 4.9.2
Libraries used:
STL: GNU ISO C++ Library, version
4.9.2
Qt project file: ./CppStdUnique_ptrExample2/CppStdUnique_ptrExample2.pro
TEMPLATE = app CONFIG += console CONFIG -= app_bundle CONFIG -= qt SOURCES += main.cpp # # # Type of compile # # CONFIG(release, debug|release) { DEFINES += NDEBUG NTRACE_BILDERBIKKEL } QMAKE_CXXFLAGS += -std=c++11 -Wall -Wextra -Weffc++ unix { QMAKE_CXXFLAGS += -Werror } # # # Boost # # win32 { INCLUDEPATH += \ ../../Libraries/boost_1_54_0 }
./CppStdUnique_ptrExample2/main.cpp
#include <iostream> #include <boost/checked_delete.hpp> #include <boost/scoped_ptr.hpp> struct MyClass { MyClass() {} static void Deleter(const MyClass * const p) { boost::checked_delete(p); } private: ~MyClass() { std::cout << "Destructor" << '\n'; } friend void boost::checked_delete<>(MyClass* x); friend void boost::checked_delete<>(const MyClass* x); }; int main() { { //Use of auto and lambda expression const auto deleter = [](const MyClass * const p) { boost::checked_delete(p); }; const std::unique_ptr<const MyClass, decltype(deleter)> p { new MyClass,deleter }; } { //Use of std::function and static member function const std::function<void(const MyClass * const)> deleter = MyClass::Deleter; const std::unique_ptr<const MyClass, decltype(deleter)> p { new MyClass,deleter }; } } /* Screen output Destructor Destructor Press <RETURN> to close this window... */