nullptr.pass.cpp revision f5256e16dfc425c1d466f6308d4026d529ce9e0b
1b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru//===----------------------------------------------------------------------===// 2b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// 3b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// The LLVM Compiler Infrastructure 459d709d503bab6e2b61931737e662dd293b40578ccornelius// 5b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// This file is distributed under the University of Illinois Open Source 6b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// License. See LICENSE.TXT for details. 7b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// 8b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru//===----------------------------------------------------------------------===// 9b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 10b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// <memory> 1127f654740f2a26ad62a5c155af9199af9e69b889claireho 12b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// unique_ptr 13b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 14b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// Test unique_ptr move assignment 15b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 16b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include <memory> 17b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include <cassert> 1859d709d503bab6e2b61931737e662dd293b40578ccornelius 1959d709d503bab6e2b61931737e662dd293b40578ccornelius// test assignment from null 2059d709d503bab6e2b61931737e662dd293b40578ccornelius 21b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustruct A 22b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 23b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru static int count; 24b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru A() {++count;} 25b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru A(const A&) {++count;} 26b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ~A() {--count;} 27b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru}; 2850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 29b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruint A::count = 0; 30b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 31b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruint main() 32b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 33b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { 34b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru std::unique_ptr<A> s2(new A); 35b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assert(A::count == 1); 36b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru s2 = nullptr; 37b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assert(A::count == 0); 38b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assert(s2.get() == 0); 39b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 40b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assert(A::count == 0); 4150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho} 42b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru