1// 1999-10-11 bkoz 2 3// Copyright (C) 1999, 2000, 2001, 2002, 2003, 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 <streambuf> 25#include <ostream> 26#include <string> 27#include <testsuite_hooks.h> 28 29// test03 30// http://gcc.gnu.org/ml/libstdc++/2000-q1/msg00151.html 31template<typename charT, typename traits = std::char_traits<charT> > 32 class basic_nullbuf : public std::basic_streambuf<charT, traits> 33 { 34 protected: 35 typedef typename 36 std::basic_streambuf<charT, traits>::int_type int_type; 37 virtual int_type 38 overflow(int_type c) 39 { return traits::not_eof(c); } 40 }; 41 42typedef basic_nullbuf<char> nullbuf; 43 44template<typename T> 45 char 46 print(const T& x) 47 { 48 nullbuf ob; 49 std::ostream out(&ob); 50 out << x << std::endl; 51 return (!out ? '0' : '1'); 52 } 53 54void test03() 55{ 56 bool test __attribute__((unused)) = true; 57 const std::string control01("11111"); 58 std::string test01; 59 60 test01 += print(true); 61 test01 += print(3.14159); 62 test01 += print(10); 63 test01 += print('x'); 64 test01 += print("pipo"); 65 66 VERIFY( test01 == control01 ); 67} 68 69int main() 70{ 71 test03(); 72 return 0; 73} 74