Home | History | Annotate | Download | only in unique.ptr.single.ctor
      1 //===----------------------------------------------------------------------===//
      2 //
      3 //                     The LLVM Compiler Infrastructure
      4 //
      5 // This file is dual licensed under the MIT and the University of Illinois Open
      6 // Source Licenses. See LICENSE.TXT for details.
      7 //
      8 //===----------------------------------------------------------------------===//
      9 
     10 // <memory>
     11 
     12 // unique_ptr
     13 
     14 // unique_ptr(nullptr_t);
     15 
     16 #include <memory>
     17 #include <cassert>
     18 
     19 // default unique_ptr ctor should only require default Deleter ctor
     20 class Deleter
     21 {
     22     int state_;
     23 
     24     Deleter(Deleter&);
     25     Deleter& operator=(Deleter&);
     26 
     27 public:
     28     Deleter() : state_(5) {}
     29 
     30     int state() const {return state_;}
     31 
     32     void operator()(void*) {}
     33 };
     34 
     35 int main()
     36 {
     37     {
     38     std::unique_ptr<int> p(nullptr);
     39     assert(p.get() == 0);
     40     }
     41     {
     42     std::unique_ptr<int, Deleter> p(nullptr);
     43     assert(p.get() == 0);
     44     assert(p.get_deleter().state() == 5);
     45     }
     46 }
     47