I read now unique_ptr source code in libstdc++.
public:
typedef _Tp* pointer;
typedef _Tp element_type;
typedef _Tp_Deleter deleter_type;
// Constructors.
unique_ptr()
: _M_t(pointer(), deleter_type())
{ static_assert(!std::is_pointer<deleter_type>::value,
"constructed with null function pointer deleter"); }
I don´t understand.Does "pointer()" call constructor? but "pointer" is an alias for type _Tp*