1// 1999-10-11 bkoz 2 3// Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2009 4// Free Software Foundation, Inc. 5// 6// This file is part of the GNU ISO C++ Library. This library is free 7// software; you can redistribute it and/or modify it under the 8// terms of the GNU General Public License as published by the 9// Free Software Foundation; either version 3, or (at your option) 10// any later version. 11 12// This library is distributed in the hope that it will be useful, 13// but WITHOUT ANY WARRANTY; without even the implied warranty of 14// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15// GNU General Public License for more details. 16 17// You should have received a copy of the GNU General Public License along 18// with this library; see the file COPYING3. If not see 19// <http://www.gnu.org/licenses/>. 20 21 22// 27.5.2 template class basic_streambuf 23 24#include <sstream> 25#include <ostream> 26#include <testsuite_hooks.h> 27 28// test03 29// http://gcc.gnu.org/ml/libstdc++/2000-q1/msg00151.html 30template<typename charT, typename traits = std::char_traits<charT> > 31 class basic_nullbuf : public std::basic_stringbuf<charT, traits> 32 { 33 protected: 34 typedef typename 35 std::basic_stringbuf<charT, traits>::int_type int_type; 36 virtual int_type 37 overflow(int_type c) 38 { return traits::not_eof(c); } 39 }; 40 41typedef basic_nullbuf<wchar_t> nullbuf; 42 43template<typename T> 44 wchar_t 45 print(const T& x) 46 { 47 nullbuf ob; 48 std::wostream out(&ob); 49 out << x << std::endl; 50 return (!out ? L'0' : L'1'); 51 } 52 53void test03() 54{ 55 bool test __attribute__((unused)) = true; 56 const std::wstring control01(L"11111"); 57 std::wstring test01; 58 59 test01 += print(true); 60 test01 += print(3.14159); 61 test01 += print(10); 62 test01 += print(L'x'); 63 test01 += print(L"pipo"); 64 65 VERIFY( test01 == control01 ); 66} 67 68int main() 69{ 70 test03(); 71 return 0; 72} 73