//===----------------------------------------------------------------------===// // // The LLVM Compiler Infrastructure // // This file is dual licensed under the MIT and the University of Illinois Open // Source Licenses. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // // class num_put // explicit num_put(size_t refs = 0); #include #include typedef std::num_put F; class my_facet : public F { public: static int count; explicit my_facet(std::size_t refs = 0) : F(refs) {++count;} ~my_facet() {--count;} }; int my_facet::count = 0; int main() { { std::locale l(std::locale::classic(), new my_facet); assert(my_facet::count == 1); } assert(my_facet::count == 0); { my_facet f(1); assert(my_facet::count == 1); { std::locale l(std::locale::classic(), &f); assert(my_facet::count == 1); } assert(my_facet::count == 1); } assert(my_facet::count == 0); }