diff options
author | Paolo Carlini <pcarlini@suse.de> | 2007-03-03 19:36:20 +0000 |
---|---|---|
committer | Paolo Carlini <paolo@gcc.gnu.org> | 2007-03-03 19:36:20 +0000 |
commit | f12409e6ecd2a937c7f349ab6ad08d83ad18bba6 (patch) | |
tree | 425170a9373c560f908c61d06f8d0e158ad48809 /libstdc++-v3/testsuite | |
parent | 695d8830016f8ce038d7891230d36b9824751610 (diff) | |
download | gcc-f12409e6ecd2a937c7f349ab6ad08d83ad18bba6.zip gcc-f12409e6ecd2a937c7f349ab6ad08d83ad18bba6.tar.gz gcc-f12409e6ecd2a937c7f349ab6ad08d83ad18bba6.tar.bz2 |
re PR libstdc++/31031 (ostream ambiguous operator&&)
2007-03-03 Paolo Carlini <pcarlini@suse.de>
PR libstdc++/31031
* include/bits/istream.tcc: Inhibit implicit instantiation of
the _M_insert helpers.
* include/bits/ostream.tcc: Likewise for _M_extract.
* testsuite/27_io/basic_ostream/inserters_arithmetic/char/
31031.cc: New.
* testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/
31031.cc: Likewise.
From-SVN: r122513
Diffstat (limited to 'libstdc++-v3/testsuite')
-rw-r--r-- | libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/31031.cc | 52 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/31031.cc | 52 |
2 files changed, 104 insertions, 0 deletions
diff --git a/libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/31031.cc b/libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/31031.cc new file mode 100644 index 0000000..255f768 --- /dev/null +++ b/libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/31031.cc @@ -0,0 +1,52 @@ +// { dg-do compile } + +// 2007-03-03 Paolo Carlini <pcarlini@suse.de> +// +// Copyright (C) 2007 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 2, or (at your option) +// any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this library; see the file COPYING. If not, write to +// the Free Software Foundation, 51 Franklin Street, Fifth Floor, +// Boston, MA 02110-1301, USA. + +#include <iostream> + +class MyClass +{ + double x; + +public: + MyClass(double X) : x(X) {} + friend bool operator&&(int i, const MyClass& Z); +}; + +inline bool +operator&&(int i, const MyClass& Z) +{ return int(Z.x) == i; } + +// libstdc++/31031 +void test01() +{ + int k =3; + MyClass X(3.1); + std::ostringstream oss; + + oss << (k && X); +} + +int main() +{ + test01(); + return 0; +} diff --git a/libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/31031.cc b/libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/31031.cc new file mode 100644 index 0000000..c6e43ec --- /dev/null +++ b/libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/31031.cc @@ -0,0 +1,52 @@ +// { dg-do compile } + +// 2007-03-03 Paolo Carlini <pcarlini@suse.de> +// +// Copyright (C) 2007 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 2, or (at your option) +// any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this library; see the file COPYING. If not, write to +// the Free Software Foundation, 51 Franklin Street, Fifth Floor, +// Boston, MA 02110-1301, USA. + +#include <sstream> + +class MyClass +{ + double x; + +public: + MyClass(double X) : x(X) {} + friend bool operator&&(int i, const MyClass& Z); +}; + +inline bool +operator&&(int i, const MyClass& Z) +{ return int(Z.x) == i; } + +// libstdc++/31031 +void test01() +{ + int k =3; + MyClass X(3.1); + std::wostringstream oss; + + oss << (k && X); +} + +int main() +{ + test01(); + return 0; +} |