|
Boost-Commit : |
From: technews_at_[hidden]
Date: 2008-01-15 16:15:08
Author: turkanis
Date: 2008-01-15 16:15:07 EST (Tue, 15 Jan 2008)
New Revision: 42802
URL: http://svn.boost.org/trac/boost/changeset/42802
Log:
rewrote treatment of result_of in terms of a new (hopefully temporary) config macro BOOST_IOSTREAMS_NO_RESULT_OF; fixed docs
Text files modified:
branches/iostreams_dev/boost/iostreams/detail/execute.hpp | 21 ++++++++++++---------
1 files changed, 12 insertions(+), 9 deletions(-)
Modified: branches/iostreams_dev/boost/iostreams/detail/execute.hpp
==============================================================================
--- branches/iostreams_dev/boost/iostreams/detail/execute.hpp (original)
+++ branches/iostreams_dev/boost/iostreams/detail/execute.hpp 2008-01-15 16:15:07 EST (Tue, 15 Jan 2008)
@@ -18,13 +18,9 @@
* are thrown. If one of the operations throws an exception, performs the
* remaining operations and rethrows the initial exception.
*
- * In order to preserve support for old compilers, no attempt is made to deduce
- * the return type of the primary operation, even though it could be easily
- * deduced in all the intended use cases.
- *
* execute_foreach() is a variant of std::foreach which invokes a function
* object for each item in a sequence, catching all execptions and rethrowing
- * the first caucht exception after the function object has been invoked on each
+ * the first caught exception after the function object has been invoked on each
* item.
*/
@@ -35,7 +31,15 @@
# pragma once
#endif
-#include <boost/config.hpp> // BOOST_NO_RESULT_OF
+#include <boost/config.hpp>
+#include <boost/detail/workaround.hpp>
+#if !defined(BOOST_IOSTREAMS_NO_RESULT_OF) && \
+ defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) || \
+ defined(BOOST_NO_SFINAE) || \
+ BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x593))
+ /**/
+# define BOOST_IOSTREAMS_NO_RESULT_OF
+#endif
#include <boost/iostreams/detail/config/limits.hpp> // MAX_EXECUTE_ARITY
#include <boost/preprocessor/arithmetic/dec.hpp>
#include <boost/preprocessor/cat.hpp>
@@ -43,7 +47,7 @@
#include <boost/preprocessor/repetition/enum_params.hpp>
#include <boost/preprocessor/repetition/enum_binary_params.hpp>
#include <boost/preprocessor/punctuation/comma_if.hpp>
-#ifndef BOOST_NO_RESULT_OF
+#ifndef BOOST_IOSTREAMS_NO_RESULT_OF
# include <boost/utility/result_of.hpp>
#endif
@@ -70,8 +74,7 @@
// returning void and non-void.
template< typename Op,
typename Result = // VC6.5 workaround.
- #if !defined(BOOST_NO_RESULT_OF) && \
- !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x592))
+ #ifndef BOOST_IOSTREAMS_NO_RESULT_OF
typename boost::result_of<Op()>::type
#else
BOOST_DEDUCED_TYPENAME Op::result_type
Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk