Commit 2ee0c1fb by Paolo Carlini Committed by Paolo Carlini

DR 660, [Ready] in Toronto.

2007-08-02  Paolo Carlini  <pcarlini@suse.de>

	DR 660, [Ready] in Toronto.
	* include/bits/stl_function.h (bit_and, bit_or, bit_xor): Add.
	* testsuite/20_util/function_objects/dr660.cc: New.
	* docs/html/ext/howto.html: Add an entry for DR 660, update.

	* docs/html/ext/lwg-closed.html, docs/html/ext/lwg-active.html,
	docs/html/ext/lwg-defects.html: Import Revision 49.

From-SVN: r127166
parent f29d2cff
2007-08-02 Paolo Carlini <pcarlini@suse.de>
DR 660, [Ready] in Toronto.
* include/bits/stl_function.h (bit_and, bit_or, bit_xor): Add.
* testsuite/20_util/function_objects/dr660.cc: New.
* docs/html/ext/howto.html: Add an entry for DR 660, update.
* docs/html/ext/lwg-closed.html, docs/html/ext/lwg-active.html,
docs/html/ext/lwg-defects.html: Import Revision 49.
2007-07-30 Paolo Carlini <pcarlini@suse.de> 2007-07-30 Paolo Carlini <pcarlini@suse.de>
PR libstdc++/32908 PR libstdc++/32908
......
...@@ -592,7 +592,7 @@ ...@@ -592,7 +592,7 @@
<dd>Construct a <code>linear_congruential</code> engine and seed with it. <dd>Construct a <code>linear_congruential</code> engine and seed with it.
</dd> </dd>
<dt><a href="lwg-active.html#526">526</a>: <dt><a href="lwg-closed.html#526">526</a>:
<em>Is it undefined if a function in the standard changes in <em>Is it undefined if a function in the standard changes in
parameters?</em> parameters?</em>
</dt> </dt>
...@@ -613,17 +613,23 @@ ...@@ -613,17 +613,23 @@
<dd>Add an auto_ptr&lt;void&gt; specialization. <dd>Add an auto_ptr&lt;void&gt; specialization.
</dd> </dd>
<dt><a href="lwg-active.html#543">543</a>: <dt><a href="lwg-defects.html#543">543</a>:
<em>valarray slice default constructor</em> <em>valarray slice default constructor</em>
</dt> </dt>
<dd>Follow the straightforward proposed resolution. <dd>Follow the straightforward proposed resolution.
</dd> </dd>
<dt><a href="lwg-active.html#586">586</a>: <dt><a href="lwg-defects.html#586">586</a>:
<em>string inserter not a formatted function</em> <em>string inserter not a formatted function</em>
</dt> </dt>
<dd>Change it to be a formatted output function (i.e. catch exceptions). <dd>Change it to be a formatted output function (i.e. catch exceptions).
</dd> </dd>
<dt><a href="lwg-active.html#660">660</a>:
<em>Missing bitwise operations</em>
</dt>
<dd>Add the missing operations.
</dd>
<!-- <!--
<dt><a href="lwg-defects.html#"></a>: <dt><a href="lwg-defects.html#"></a>:
<em></em> <em></em>
......
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -281,6 +281,32 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -281,6 +281,32 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
}; };
/** @} */ /** @} */
// _GLIBCXX_RESOLVE_LIB_DEFECTS
// DR 660. Missing Bitwise Operations.
template <class _Tp>
struct bit_and : public binary_function<_Tp, _Tp, _Tp>
{
_Tp
operator()(const _Tp& __x, const _Tp& __y) const
{ return __x & __y; }
};
template <class _Tp>
struct bit_or : public binary_function<_Tp, _Tp, _Tp>
{
_Tp
operator()(const _Tp& __x, const _Tp& __y) const
{ return __x | __y; }
};
template <class _Tp>
struct bit_xor : public binary_function<_Tp, _Tp, _Tp>
{
_Tp
operator()(const _Tp& __x, const _Tp& __y) const
{ return __x ^ __y; }
};
// 20.3.5 negators // 20.3.5 negators
/** @defgroup s20_3_5_negators Negators /** @defgroup s20_3_5_negators Negators
* The functions @c not1 and @c not2 each take a predicate functor * The functions @c not1 and @c not2 each take a predicate functor
......
// 2007-08-02 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 <functional>
#include <testsuite_hooks.cc>
// DR 660. Missing Bitwise Operations.
void test01()
{
bool test __attribute__((unused)) = true;
for (int i1 = 0; i1 < 1000; ++i1)
for (int i2 = 0; i2 < 1000; ++i2)
{
VERIFY( std::bit_and<int>()(i1, i2) == (i1 & i2) );
VERIFY( std::bit_or<int>()(i1, i2) == (i1 | i2) );
VERIFY( std::bit_xor<int>()(i1, i2) == (i1 ^ i2) );
}
}
int main()
{
test01();
return 0;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment