#include <iostream>
#include <memory>
int main ( ) {
std:: default_delete < int > d;
std:: unique_ptr < int > u1;
std:: unique_ptr < int > u2 ( nullptr) ;
std:: unique_ptr < int > u3 ( new int ) ;
std:: unique_ptr < int > u4 ( new int , d) ;
std:: unique_ptr < int > u5 ( new int , std:: default_delete < int > ( ) ) ;
std:: unique_ptr < int > u6 ( std:: move ( u5) ) ;
std:: unique_ptr < void > u7 ( std:: move ( u6) ) ;
std:: unique_ptr < int > u8 ( std:: auto_ptr < int > ( new int ) ) ;
std:: cout << "u1: " << ( u1? "not null" : "null" ) << '\n ' ;
std:: cout << "u2: " << ( u2? "not null" : "null" ) << '\n ' ;
std:: cout << "u3: " << ( u3? "not null" : "null" ) << '\n ' ;
std:: cout << "u4: " << ( u4? "not null" : "null" ) << '\n ' ;
std:: cout << "u5: " << ( u5? "not null" : "null" ) << '\n ' ;
std:: cout << "u6: " << ( u6? "not null" : "null" ) << '\n ' ;
std:: cout << "u7: " << ( u7? "not null" : "null" ) << '\n ' ;
std:: cout << "u8: " << ( u8? "not null" : "null" ) << '\n ' ;
return 0 ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bWVtb3J5PgoKaW50IG1haW4gKCkgewogIHN0ZDo6ZGVmYXVsdF9kZWxldGU8aW50PiBkOwogIHN0ZDo6dW5pcXVlX3B0cjxpbnQ+IHUxOwogIHN0ZDo6dW5pcXVlX3B0cjxpbnQ+IHUyIChudWxscHRyKTsKICBzdGQ6OnVuaXF1ZV9wdHI8aW50PiB1MyAobmV3IGludCk7CiAgc3RkOjp1bmlxdWVfcHRyPGludD4gdTQgKG5ldyBpbnQsIGQpOwogIHN0ZDo6dW5pcXVlX3B0cjxpbnQ+IHU1IChuZXcgaW50LCBzdGQ6OmRlZmF1bHRfZGVsZXRlPGludD4oKSk7CiAgc3RkOjp1bmlxdWVfcHRyPGludD4gdTYgKHN0ZDo6bW92ZSh1NSkpOwogIHN0ZDo6dW5pcXVlX3B0cjx2b2lkPiB1NyAoc3RkOjptb3ZlKHU2KSk7CiAgc3RkOjp1bmlxdWVfcHRyPGludD4gdTggKHN0ZDo6YXV0b19wdHI8aW50PihuZXcgaW50KSk7CgogIHN0ZDo6Y291dCA8PCAidTE6ICIgPDwgKHUxPyJub3QgbnVsbCI6Im51bGwiKSA8PCAnXG4nOwogIHN0ZDo6Y291dCA8PCAidTI6ICIgPDwgKHUyPyJub3QgbnVsbCI6Im51bGwiKSA8PCAnXG4nOwogIHN0ZDo6Y291dCA8PCAidTM6ICIgPDwgKHUzPyJub3QgbnVsbCI6Im51bGwiKSA8PCAnXG4nOwogIHN0ZDo6Y291dCA8PCAidTQ6ICIgPDwgKHU0PyJub3QgbnVsbCI6Im51bGwiKSA8PCAnXG4nOwogIHN0ZDo6Y291dCA8PCAidTU6ICIgPDwgKHU1PyJub3QgbnVsbCI6Im51bGwiKSA8PCAnXG4nOwogIHN0ZDo6Y291dCA8PCAidTY6ICIgPDwgKHU2PyJub3QgbnVsbCI6Im51bGwiKSA8PCAnXG4nOwogIHN0ZDo6Y291dCA8PCAidTc6ICIgPDwgKHU3PyJub3QgbnVsbCI6Im51bGwiKSA8PCAnXG4nOwogIHN0ZDo6Y291dCA8PCAidTg6ICIgPDwgKHU4PyJub3QgbnVsbCI6Im51bGwiKSA8PCAnXG4nOwoKICByZXR1cm4gMDsKfQ==
compilation info
In file included from /usr/include/c++/4.9/memory:81:0,
from prog.cpp:2:
/usr/include/c++/4.9/bits/unique_ptr.h: In instantiation of 'void std::default_delete<_Tp>::operator()(_Tp*) const [with _Tp = void]':
/usr/include/c++/4.9/bits/unique_ptr.h:236:16: required from 'std::unique_ptr<_Tp, _Dp>::~unique_ptr() [with _Tp = void; _Dp = std::default_delete<void>]'
prog.cpp:12:42: required from here
/usr/include/c++/4.9/bits/unique_ptr.h:72:2: error: static assertion failed: can't delete pointer to incomplete type
static_assert(!is_void<_Tp>::value,
^
stdout