gcc/libstdc++-v3/testsuite/util/testsuite_greedy_ops.h
François Dumont f38716953d stl_iterator.h: Add move_iterator operators overloads to make it robust to template abuses.
2010-12-07  François Dumont  <francois.cppdevs@free.fr>

	* include/bits/stl_iterator.h: Add move_iterator operators overloads
	to make it robust to template abuses.
	* testsuite/util/testsuite_greedy_ops.h: New.
	* testsuite/23_containers/vector/types/1.cc: Use latter.
	* testsuite/23_containers/deque/types/1.cc: Likewise.
	* testsuite/24_iterators/move_iterator/greedy_ops.cc: New.
	* testsuite/24_iterators/normal_iterator/greedy_ops.cc: New.
	* testsuite/24_iterators/reverse_iterator/greedy_ops.cc: New.
	* testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Adjust dg-error
	line numbers.

From-SVN: r167580
2010-12-08 01:23:41 +00:00

59 lines
1.4 KiB
C++

// Copyright (C) 2010 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 3, 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 COPYING3. If not see
// <http://www.gnu.org/licenses/>.
namespace greedy_ops
{
struct X
{ };
template<typename T>
X operator==(T, T)
{ return X(); }
template<typename T>
X operator!=(T, T)
{ return X(); }
template<typename T>
X operator<(T, T)
{ return X(); }
template<typename T>
X operator<=(T, T)
{ return X(); }
template<typename T>
X operator>(T, T)
{ return X(); }
template<typename T>
X operator>=(T, T)
{ return X(); }
template<typename T>
X operator-(T, T)
{ return X(); }
/*
template<typename T>
T operator+(std::size_t, T)
{ return T(); }
*/
template<typename T>
T operator+(T, std::size_t)
{ return T(); }
}