pointer_deleter06.pass.cpp revision c52f43e72dfcea03037729649da84c23b3beb04a
1//===----------------------------------------------------------------------===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9 10// <memory> 11 12// unique_ptr 13 14// Test unique_ptr(pointer, deleter) ctor 15 16#include <memory> 17#include <cassert> 18 19// unique_ptr(pointer, deleter) should work with function pointers 20// unique_ptr<void> should work 21 22bool my_free_called = false; 23 24void my_free(void*) 25{ 26 my_free_called = true; 27} 28 29int main() 30{ 31 { 32 int i = 0; 33 std::unique_ptr<void, void (*)(void*)> s(&i, my_free); 34 assert(s.get() == &i); 35 assert(s.get_deleter() == my_free); 36 assert(!my_free_called); 37 } 38 assert(my_free_called); 39} 40