/* Copyright 2014 Glen Joseph Fernandes (glenjofe@gmail.com) Distributed under the Boost Software License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt) */ #include #include #include #include #include template class type { public: static unsigned count; type() : value_() { ++count; } ~type() { --count; } private: T value_; }; template unsigned type::count = 0; template void test() { typedef type E; void* p = boost::alignment::aligned_alloc(boost:: alignment::alignment_of::value, sizeof(E)); BOOST_TEST(p != 0); E* q = ::new(p) E; BOOST_TEST(E::count == 1); boost::alignment::aligned_delete()(q); BOOST_TEST(E::count == 0); } class C { }; union U { }; int main() { test(); test(); test(); test(); test(); test(); test(); test(); test(); test(); test(); test(); test(); test(); return boost::report_errors(); }