ctor.pass.cpp revision f5256e16dfc425c1d466f6308d4026d529ce9e0b
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//===----------------------------------------------------------------------===// 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// The LLVM Compiler Infrastructure 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// This file is distributed under the University of Illinois Open Source 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// License. See LICENSE.TXT for details. 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//===----------------------------------------------------------------------===// 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// <locale> 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// class num_get<charT, InputIterator> 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// explicit num_get(size_t refs = 0); 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <locale> 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <cassert> 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef std::num_get<char, char*> F; 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 21a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)class my_facet 22a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) : public F 23a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles){ 24a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)public: 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static int count; 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) explicit my_facet(std::size_t refs = 0) 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : F(refs) {++count;} 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ~my_facet() {--count;} 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int my_facet::count = 0; 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 35int main() 36{ 37 { 38 std::locale l(std::locale::classic(), new my_facet); 39 assert(my_facet::count == 1); 40 } 41 assert(my_facet::count == 0); 42 { 43 my_facet f(1); 44 assert(my_facet::count == 1); 45 { 46 std::locale l(std::locale::classic(), &f); 47 assert(my_facet::count == 1); 48 } 49 assert(my_facet::count == 1); 50 } 51 assert(my_facet::count == 0); 52} 53