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