|
Boost-Commit : |
Subject: [Boost-commit] svn:boost r67792 - in branches/release: boost boost/fusion/container/list/detail boost/iterator status
From: marshall_at_[hidden]
Date: 2011-01-08 13:38:38
Author: marshall
Date: 2011-01-08 13:38:08 EST (Sat, 08 Jan 2011)
New Revision: 67792
URL: http://svn.boost.org/trac/boost/changeset/67792
Log:
Merging fixes to release; fixes #2294 fixes #4918 fixes #3645 refs #2823 refs #1427 refs #2893
Properties modified:
branches/release/boost/concept_check.hpp (contents, props changed)
branches/release/boost/fusion/container/list/detail/build_cons.hpp (contents, props changed)
branches/release/boost/iterator/iterator_facade.hpp (contents, props changed)
branches/release/status/explicit-failures-markup.xml (contents, props changed)
Text files modified:
branches/release/boost/concept_check.hpp | 166 ++++++++++++++++++++------------
branches/release/boost/fusion/container/list/detail/build_cons.hpp | 3
branches/release/boost/iterator/iterator_facade.hpp | 28 ++--
branches/release/status/explicit-failures-markup.xml | 199 ++++++++++++++++++++++++++++-----------
4 files changed, 261 insertions(+), 135 deletions(-)
Modified: branches/release/boost/concept_check.hpp
==============================================================================
--- branches/release/boost/concept_check.hpp (original)
+++ branches/release/boost/concept_check.hpp 2011-01-08 13:38:08 EST (Sat, 08 Jan 2011)
@@ -38,14 +38,14 @@
//
// Backward compatibility
//
-
+
template <class Model>
inline void function_requires(Model* = 0)
{
BOOST_CONCEPT_ASSERT((Model));
- }
+ }
template <class T> inline void ignore_unused_variable_warning(T const&) {}
-
+
# define BOOST_CLASS_REQUIRE(type_var, ns, concept) \
BOOST_CONCEPT_ASSERT((ns::concept<type_var>))
@@ -58,20 +58,21 @@
# define BOOST_CLASS_REQUIRE4(tv1, tv2, tv3, tv4, ns, concept) \
BOOST_CONCEPT_ASSERT((ns::concept<tv1,tv2,tv3,tv4>))
-
+
//
// Begin concept definitions
//
BOOST_concept(Integer, (T))
{
BOOST_CONCEPT_USAGE(Integer)
- {
+ {
x.error_type_must_be_an_integer_type();
}
private:
T x;
};
+ template <> struct Integer<char> {};
template <> struct Integer<signed char> {};
template <> struct Integer<unsigned char> {};
template <> struct Integer<short> {};
@@ -89,7 +90,7 @@
# endif
BOOST_concept(SignedInteger,(T)) {
- BOOST_CONCEPT_USAGE(SignedInteger) {
+ BOOST_CONCEPT_USAGE(SignedInteger) {
x.error_type_must_be_a_signed_integer_type();
}
private:
@@ -103,16 +104,16 @@
template <> struct SignedInteger< ::boost::long_long_type> {};
# elif defined(BOOST_HAS_MS_INT64)
template <> struct SignedInteger<__int64> {};
-# endif
+# endif
BOOST_concept(UnsignedInteger,(T)) {
- BOOST_CONCEPT_USAGE(UnsignedInteger) {
+ BOOST_CONCEPT_USAGE(UnsignedInteger) {
x.error_type_must_be_an_unsigned_integer_type();
}
private:
T x;
};
-
+
template <> struct UnsignedInteger<unsigned char> {};
template <> struct UnsignedInteger<unsigned short> {};
template <> struct UnsignedInteger<unsigned int> {};
@@ -138,23 +139,24 @@
{
BOOST_CONCEPT_USAGE(Assignable) {
#if !defined(_ITERATOR_) // back_insert_iterator broken for VC++ STL
- a = a; // require assignment operator
+ a = b; // require assignment operator
#endif
- const_constraints(a);
+ const_constraints(b);
}
private:
- void const_constraints(const TT& b) {
+ void const_constraints(const TT& x) {
#if !defined(_ITERATOR_) // back_insert_iterator broken for VC++ STL
- a = b; // const required for argument to assignment
+ a = x; // const required for argument to assignment
#else
- ignore_unused_variable_warning(b);
+ ignore_unused_variable_warning(x);
#endif
}
private:
TT a;
+ TT b;
};
-
+
BOOST_concept(CopyConstructible,(TT))
{
BOOST_CONCEPT_USAGE(CopyConstructible) {
@@ -182,22 +184,23 @@
BOOST_concept(SGIAssignable,(TT))
{
BOOST_CONCEPT_USAGE(SGIAssignable) {
- TT b(a);
+ TT c(a);
#if !defined(_ITERATOR_) // back_insert_iterator broken for VC++ STL
- a = a; // require assignment operator
+ a = b; // require assignment operator
#endif
- const_constraints(a);
- ignore_unused_variable_warning(b);
+ const_constraints(b);
+ ignore_unused_variable_warning(c);
}
private:
- void const_constraints(const TT& b) {
- TT c(b);
+ void const_constraints(const TT& x) {
+ TT c(x);
#if !defined(_ITERATOR_) // back_insert_iterator broken for VC++ STL
- a = b; // const required for argument to assignment
+ a = x; // const required for argument to assignment
#endif
ignore_unused_variable_warning(c);
}
TT a;
+ TT b;
};
#if (defined _MSC_VER)
# pragma warning( pop )
@@ -299,7 +302,7 @@
BOOST_concept(Generator,(Func)(Return))
{
BOOST_CONCEPT_USAGE(Generator) { test(is_void<Return>()); }
-
+
private:
void test(boost::mpl::false_)
{
@@ -312,22 +315,22 @@
{
f();
}
-
+
Func f;
};
BOOST_concept(UnaryFunction,(Func)(Return)(Arg))
{
BOOST_CONCEPT_USAGE(UnaryFunction) { test(is_void<Return>()); }
-
+
private:
void test(boost::mpl::false_)
{
f(arg); // "priming the pump" this way keeps msvc6 happy (ICE)
Return r = f(arg);
- ignore_unused_variable_warning(r);
+ ignore_unused_variable_warning(r);
}
-
+
void test(boost::mpl::true_)
{
f(arg);
@@ -356,12 +359,21 @@
Return r = f(first, second); // require operator()
(void)r;
}
-
+
void test(boost::mpl::true_)
{
f(first,second);
}
-
+
+#if (BOOST_WORKAROUND(__GNUC__, BOOST_TESTED_AT(4) \
+ && BOOST_WORKAROUND(__GNUC__, > 3)))
+ // Declare a dummy constructor to make gcc happy.
+ // It seems the compiler can not generate a sensible constructor when this is instantiated with a refence type.
+ // (warning: non-static reference "const double& boost::BinaryFunction<YourClassHere>::arg"
+ // in class without a constructor [-Wuninitialized])
+ BinaryFunction();
+#endif
+
Func f;
First first;
Second second;
@@ -373,6 +385,15 @@
require_boolean_expr(f(arg)); // require operator() returning bool
}
private:
+#if (BOOST_WORKAROUND(__GNUC__, BOOST_TESTED_AT(4) \
+ && BOOST_WORKAROUND(__GNUC__, > 3)))
+ // Declare a dummy constructor to make gcc happy.
+ // It seems the compiler can not generate a sensible constructor when this is instantiated with a refence type.
+ // (warning: non-static reference "const double& boost::UnaryPredicate<YourClassHere>::arg"
+ // in class without a constructor [-Wuninitialized])
+ UnaryPredicate();
+#endif
+
Func f;
Arg arg;
};
@@ -383,6 +404,14 @@
require_boolean_expr(f(a, b)); // require operator() returning bool
}
private:
+#if (BOOST_WORKAROUND(__GNUC__, BOOST_TESTED_AT(4) \
+ && BOOST_WORKAROUND(__GNUC__, > 3)))
+ // Declare a dummy constructor to make gcc happy.
+ // It seems the compiler can not generate a sensible constructor when this is instantiated with a refence type.
+ // (warning: non-static reference "const double& boost::BinaryPredicate<YourClassHere>::arg"
+ // in class without a constructor [-Wuninitialized])
+ BinaryPredicate();
+#endif
Func f;
First a;
Second b;
@@ -392,7 +421,7 @@
BOOST_concept(Const_BinaryPredicate,(Func)(First)(Second))
: BinaryPredicate<Func, First, Second>
{
- BOOST_CONCEPT_USAGE(Const_BinaryPredicate) {
+ BOOST_CONCEPT_USAGE(Const_BinaryPredicate) {
const_constraints(f);
}
private:
@@ -400,6 +429,15 @@
// operator() must be a const member function
require_boolean_expr(fun(a, b));
}
+#if (BOOST_WORKAROUND(__GNUC__, BOOST_TESTED_AT(4) \
+ && BOOST_WORKAROUND(__GNUC__, > 3)))
+ // Declare a dummy constructor to make gcc happy.
+ // It seems the compiler can not generate a sensible constructor when this is instantiated with a refence type.
+ // (warning: non-static reference "const double& boost::Const_BinaryPredicate<YourClassHere>::arg"
+ // in class without a constructor [-Wuninitialized])
+ Const_BinaryPredicate();
+#endif
+
Func f;
First a;
Second b;
@@ -409,7 +447,7 @@
: Generator<Func, typename Func::result_type>
{
typedef typename Func::result_type result_type;
-
+
BOOST_CONCEPT_USAGE(AdaptableGenerator)
{
BOOST_CONCEPT_ASSERT((Convertible<result_type, Return>));
@@ -440,7 +478,7 @@
typedef typename Func::first_argument_type first_argument_type;
typedef typename Func::second_argument_type second_argument_type;
typedef typename Func::result_type result_type;
-
+
~AdaptableBinaryFunction()
{
BOOST_CONCEPT_ASSERT((Convertible<result_type, Return>));
@@ -478,7 +516,7 @@
{
BOOST_CONCEPT_ASSERT((SignedInteger<difference_type>));
BOOST_CONCEPT_ASSERT((Convertible<iterator_category, std::input_iterator_tag>));
-
+
TT j(i);
(void)*i; // require dereference operator
++j; // require preincrement operator
@@ -492,7 +530,7 @@
: Assignable<TT>
{
BOOST_CONCEPT_USAGE(OutputIterator) {
-
+
++i; // require preincrement operator
i++; // require postincrement operator
*i++ = t; // require postincrement and assignment
@@ -511,11 +549,11 @@
BOOST_DEDUCED_TYPENAME ForwardIterator::iterator_category
, std::forward_iterator_tag
>));
-
+
typename InputIterator<TT>::reference r = *i;
ignore_unused_variable_warning(r);
}
-
+
private:
TT i;
};
@@ -577,7 +615,7 @@
n = i - j; // require difference operator
(void)i[n]; // require element access operator
}
-
+
private:
TT a, b;
TT i, j;
@@ -615,7 +653,7 @@
BOOST_CONCEPT_ASSERT((InputIterator<const_iterator>));
const_constraints(c);
}
-
+
private:
void const_constraints(const C& cc) {
i = cc.begin();
@@ -636,19 +674,19 @@
typedef typename C::reference reference;
typedef typename C::iterator iterator;
typedef typename C::pointer pointer;
-
+
BOOST_CONCEPT_USAGE(Mutable_Container)
{
BOOST_CONCEPT_ASSERT((
Assignable<typename Mutable_Container::value_type>));
-
+
BOOST_CONCEPT_ASSERT((InputIterator<iterator>));
-
+
i = c.begin();
i = c.end();
c.swap(c2);
}
-
+
private:
iterator i;
C c, c2;
@@ -664,7 +702,7 @@
typename ForwardContainer::const_iterator
>));
}
- };
+ };
BOOST_concept(Mutable_ForwardContainer,(C))
: ForwardContainer<C>
@@ -677,7 +715,7 @@
typename Mutable_ForwardContainer::iterator
>));
}
- };
+ };
BOOST_concept(ReversibleContainer,(C))
: ForwardContainer<C>
@@ -691,9 +729,9 @@
BOOST_CONCEPT_ASSERT((
BidirectionalIterator<
typename ReversibleContainer::const_iterator>));
-
+
BOOST_CONCEPT_ASSERT((BidirectionalIterator<const_reverse_iterator>));
-
+
const_constraints(c);
}
private:
@@ -710,17 +748,17 @@
, ReversibleContainer<C>
{
typedef typename C::reverse_iterator reverse_iterator;
-
+
BOOST_CONCEPT_USAGE(Mutable_ReversibleContainer)
{
typedef typename Mutable_ForwardContainer<C>::iterator iterator;
BOOST_CONCEPT_ASSERT((Mutable_BidirectionalIterator<iterator>));
BOOST_CONCEPT_ASSERT((Mutable_BidirectionalIterator<reverse_iterator>));
-
+
reverse_iterator i = c.rbegin();
i = c.rend();
}
- private:
+ private:
C c;
};
@@ -736,7 +774,7 @@
RandomAccessIterator<
typename RandomAccessContainer::const_iterator
>));
-
+
const_constraints(c);
}
private:
@@ -745,7 +783,7 @@
const_reference r = cc[n];
ignore_unused_variable_warning(r);
}
-
+
C c;
size_type n;
};
@@ -761,11 +799,11 @@
{
BOOST_CONCEPT_ASSERT((Mutable_RandomAccessIterator<typename self::iterator>));
BOOST_CONCEPT_ASSERT((Mutable_RandomAccessIterator<typename self::reverse_iterator>));
-
+
typename self::reference r = c[i];
ignore_unused_variable_warning(r);
}
-
+
private:
typename Mutable_ReversibleContainer<C>::size_type i;
C c;
@@ -781,7 +819,7 @@
{
BOOST_CONCEPT_USAGE(Sequence)
{
- S
+ S
c(n),
c2(n, t),
c3(first, last);
@@ -806,7 +844,7 @@
typename Sequence::const_reference r = c.front();
ignore_unused_variable_warning(r);
}
-
+
typename S::value_type t;
typename S::size_type n;
typename S::value_type* first, *last;
@@ -865,11 +903,11 @@
c.erase(r.first, r.second);
const_constraints(c);
BOOST_CONCEPT_ASSERT((BinaryPredicate<key_compare,key_type,key_type>));
-
+
typedef typename AssociativeContainer::value_type value_type_;
BOOST_CONCEPT_ASSERT((BinaryPredicate<value_compare,value_type_,value_type_>));
}
-
+
// Redundant with the base concept, but it helps below.
typedef typename C::const_iterator const_iterator;
private:
@@ -895,7 +933,7 @@
BOOST_CONCEPT_USAGE(UniqueAssociativeContainer)
{
C c(first, last);
-
+
pos_flag = c.insert(t);
c.insert(first, last);
@@ -913,7 +951,7 @@
BOOST_CONCEPT_USAGE(MultipleAssociativeContainer)
{
C c(first, last);
-
+
pos = c.insert(t);
c.insert(first, last);
@@ -956,7 +994,7 @@
{
BOOST_CONCEPT_USAGE(SortedAssociativeContainer)
{
- C
+ C
c(kc),
c2(first, last),
c3(first, last, kc);
@@ -964,15 +1002,15 @@
p = c.upper_bound(k);
p = c.lower_bound(k);
r = c.equal_range(k);
-
+
c.insert(p, t);
-
+
ignore_unused_variable_warning(c);
ignore_unused_variable_warning(c2);
ignore_unused_variable_warning(c3);
const_constraints(c);
}
-
+
void const_constraints(const C& c)
{
kc = c.key_comp();
@@ -982,7 +1020,7 @@
cp = c.lower_bound(k);
cr = c.equal_range(k);
}
-
+
private:
typename C::key_compare kc;
typename C::value_compare vc;
Modified: branches/release/boost/fusion/container/list/detail/build_cons.hpp
==============================================================================
--- branches/release/boost/fusion/container/list/detail/build_cons.hpp (original)
+++ branches/release/boost/fusion/container/list/detail/build_cons.hpp 2011-01-08 13:38:08 EST (Sat, 08 Jan 2011)
@@ -48,7 +48,8 @@
static type
call(First const& f, Last const& l)
{
- return type(*f, next_build_cons::call(fusion::next(f), l));
+ typename result_of::deref<First>::type v = *f;
+ return type(v, next_build_cons::call(fusion::next(f), l));
}
};
Modified: branches/release/boost/iterator/iterator_facade.hpp
==============================================================================
--- branches/release/boost/iterator/iterator_facade.hpp (original)
+++ branches/release/boost/iterator/iterator_facade.hpp 2011-01-08 13:38:08 EST (Sat, 08 Jan 2011)
@@ -105,6 +105,7 @@
typedef typename remove_const<ValueParam>::type value_type;
+ // Not the real associated pointer type
typedef typename mpl::eval_if<
boost::detail::iterator_writability_disabled<ValueParam,Reference>
, add_pointer<const value_type>
@@ -323,7 +324,7 @@
static type make(Reference x)
{
- return implicit_cast<type>(&x);
+ return boost::implicit_cast<type>(&x);
}
};
@@ -617,6 +618,12 @@
Value, CategoryOrTraversal, Reference, Difference
> associated_types;
+ typedef boost::detail::operator_arrow_result<
+ typename associated_types::value_type
+ , Reference
+ , typename associated_types::pointer
+ > pointer_;
+
protected:
// For use by derived classes
typedef iterator_facade<Derived,Value,CategoryOrTraversal,Reference,Difference> iterator_facade_;
@@ -626,7 +633,9 @@
typedef typename associated_types::value_type value_type;
typedef Reference reference;
typedef Difference difference_type;
- typedef typename associated_types::pointer pointer;
+
+ typedef typename pointer_::type pointer;
+
typedef typename associated_types::iterator_category iterator_category;
reference operator*() const
@@ -634,18 +643,9 @@
return iterator_core_access::dereference(this->derived());
}
- typename boost::detail::operator_arrow_result<
- value_type
- , reference
- , pointer
- >::type
- operator->() const
- {
- return boost::detail::operator_arrow_result<
- value_type
- , reference
- , pointer
- >::make(*this->derived());
+ pointer operator->() const
+ {
+ return pointer_::make(*this->derived());
}
typename boost::detail::operator_brackets_result<Derived,Value,reference>::type
Modified: branches/release/status/explicit-failures-markup.xml
==============================================================================
--- branches/release/status/explicit-failures-markup.xml (original)
+++ branches/release/status/explicit-failures-markup.xml 2011-01-08 13:38:08 EST (Sat, 08 Jan 2011)
@@ -478,6 +478,17 @@
</test>
</library>
+ <!-- chrono -->
+ <library name="chrono">
+ <mark-unusable>
+ <toolset name="borland-*"/>
+ <toolset name="pathscale*"/>
+ <note author="Vicente J. Botet Escriba">
+ The compiler does not support features that are essential for the library.
+ </note>
+ </mark-unusable>
+ </library>
+
<!-- circular_buffer -->
<library name="circular_buffer">
<mark-expected-failures>
@@ -619,7 +630,7 @@
<toolset name="msvc-7.1*"/>
<toolset name="acc"/>
<note author="Alexander Nasonov">
- Conversion double-string-double may give a different value (or even throw) on many compilers
+ Conversion double-string-double may give a different value (or even throw) on many compilers
</note>
</mark-failure>
</test>
@@ -1394,7 +1405,7 @@
<toolset name="sun-5.7"/>
<toolset name="sun-5.8"/>
<note author="Beman Dawes">
- The library works well with versions of this compiler 5.9 and later
+ The library works well with versions of this compiler 5.9 and later
</note>
</mark-expected-failures>
<mark-expected-failures>
@@ -1820,7 +1831,7 @@
<toolset name="acc"/>
<note author="Tobias Schwinger">
Those failures are due to not quite const-correct overload
- resolution. The complaints from the test suite should rarely
+ resolution. The complaints from the test suite should rarely
matter in practice - the corresponding components are basically
usable. With aCC6, when compiled in strict ansi mode, the test
succeeds.
@@ -1847,37 +1858,15 @@
<mark-unusable>
<toolset name="borland-5.*"/>
<toolset name="borland-6.*"/>
- <!-- Open64 and Pathscale ICE on almost all test cases, often
- because of http://gcc.gnu.org/bugzilla/show_bug.cgi?id=17327;
- property type detection fails because it uses enum types as tags.
- -->
- <toolset name="gcc-open64"/>
- <toolset name="pathscale-3.1"/>
- <!-- vacpp ICEs on many of the tests -->
- <toolset name="vacpp"/>
+ <toolset name="borland-cb2009"/>
+ <toolset name="borland-cb2010"/>
+ <toolset name="sun-5.9"/>
</mark-unusable>
<mark-expected-failures>
- <test name="graphviz_test"/>
- <toolset name="vc-8_0"/>
- <toolset name="msvc-8_0"/>
- <toolset name="intel-vc71-win-9.1"/>
- <note refid="1" author="Doug Gregor"/>
- </mark-expected-failures>
- <mark-expected-failures>
- <test name="graphviz_test"/>
- <toolset name="como-4_3_3-vc7_1"/>
- <note refid="3" author="Doug Gregor"/>
- </mark-expected-failures>
- <mark-expected-failures>
- <test name="bundled_properties"/>
- <toolset name="qcc-3.3*"/>
- <note author="Jim Douglas" date="18 Feb 06" refid="27"/>
- </mark-expected-failures>
- <mark-expected-failures>
- <test name="boykov_kolmogorov_max_flow_test"/>
- <test name="max_flow_test"/>
- <toolset name="acc*"/>
- <note author="Markus Schoepflin" refid="45"/>
+ <test name="grid_graph_cc"/>
+ <test name="grid_graph_test"/>
+ <toolset name="msvc-7.1"/>
+ <note author="Jeremiah Willcock" refid="2"/>
</mark-expected-failures>
</library>
@@ -1891,7 +1880,7 @@
When compiling with aC++, depending on system load, the compile time may exceed
specified timeout value. The test passes when the timeout value is increased.
When compiling with GCC, linker takes segmentation fault.
- In the HP bug tracking system, this issue is tracked as QuIX ID: QXCR1000836120.
+ In the HP bug tracking system, this issue is tracked as QuIX ID: QXCR1000836120.
</note>
</mark-expected-failures>
</library>
@@ -1912,7 +1901,6 @@
<toolset name="mipspro"/>
<toolset name="acc*"/>
<toolset name="msvc-8.0~wm5*"/>
- <toolset name="vacpp*"/>
<toolset name="pathscale*"/>
<toolset name="intel-linux-8.*"/>
<toolset name="gcc-3.4.6_linux_ia64"/>
@@ -1934,7 +1922,6 @@
<toolset name="gcc-3.2*"/>
<toolset name="gcc-3.3*"/>
<toolset name="mipspro"/>
- <toolset name="vacpp*"/>
<toolset name="pathscale*"/>
<toolset name="intel-linux-8.*"/>
<note author="Ion Gaztañaga">
@@ -2139,7 +2126,7 @@
<toolset name="vacpp"/>
<note author="Jonathan Turkanis" date="06 Jan 2008">
"restrict" is treated as a keyword on this platform (as in C99);
- use the alias "slice" instead, defined in
+ use the alias "slice" instead, defined in
"boost/iostreams/slice.hpp."
</note>
</mark-expected-failures>
@@ -2163,8 +2150,8 @@
<test name="stream_offset_64bit_test"/>
<toolset name="borland-*"/>
<note author="Jonathan Turkanis" date="04 Jan 2008">
- In the Dinkumware standard library, streampos relies on fpos_t
- to store stream offsets, but fpos_t is defined as a 32-bit
+ In the Dinkumware standard library, streampos relies on fpos_t
+ to store stream offsets, but fpos_t is defined as a 32-bit
long by the Borland runtime library. In Borland's modified
version of STLPort, streampos relies on streamoff to store
stream offsets, but streamoff is defined to be a 32-bit long.
@@ -2182,8 +2169,8 @@
<test name="stream_offset_64bit_test"/>
<toolset name="vacpp*"/>
<note author="Jonathan Turkanis" date="09 Jan 2008">
- On this platform, streampos is an alias for fpos, whose
- implementation stores stream offsets using streamsize and
+ On this platform, streampos is an alias for fpos, whose
+ implementation stores stream offsets using streamsize and
fpos_t; both of the latter types are 32-bit
</note>
</mark-expected-failures>
@@ -2204,8 +2191,8 @@
<test name="stream_offset_64bit_test"/>
<toolset name="gcc-4.2"/>
<note author="Jonathan Turkanis" date="09 Jan 2008">
- The following applies only to gcc-4.2 using the stdcxx
- standard library: On this platform, streampos is an alias for
+ The following applies only to gcc-4.2 using the stdcxx
+ standard library: On this platform, streampos is an alias for
ptrdiff_t, which is an alias for a 32-bit type
</note>
</mark-expected-failures>
@@ -2559,24 +2546,52 @@
<toolset name="gcc-3.4.6_linux_ia64"/>
<toolset name="gcc-4.2.*"/>
<toolset name="gcc-4.1.2_sunos_i86pc"/>
- <note author="Fernando Cacciola" refid="2"/>
+ <note author="Fernando Cacciola" id="optional-compiler-bug">
+ <p>This failure is caused by a compiler bug, and as far as we can
+ tell, can't be worked around in the library, although we think
+ the library might be made safer with respect to this bug.</p>
+
+ <p>Specifics: the following simple test fails when it should succeed.</p>
+ <pre>
+ #include <cassert>
+
+ int const x = 0;
+ struct A
+ {
+ A(int const& y)
+ {
+ assert(&x == &y);
+ }
+ };
+
+ int main()
+ {
+ A a(x); // direct initialization works fine
+ A b = x; // copy initialization causes x to be copied before it is bound
+ }
+ </pre>
+
+ The possible safety enhancement would be to cause the constructor
+ in question to be explicit for optional<T const&>; that
+ would prevent copy initialization.
+ </note>
</mark-expected-failures>
<mark-expected-failures>
<test name="optional_test_ref_fail1"/>
<toolset name="borland-5.6*"/>
<toolset name="borland-5.8*"/>
<toolset name="borland-5.9*"/>
- <note author="Fernando Cacciola" refid="2"/>
+ <note author="Fernando Cacciola" refid="optional-compiler-bug"/>
</mark-expected-failures>
<mark-expected-failures>
<test name="optional_test_fail3a"/>
<toolset name="gcc-3_3-darwin"/>
- <note author="Fernando Cacciola" refid="2"/>
+ <note author="Fernando Cacciola" refid="optional-compiler-bug"/>
</mark-expected-failures>
<mark-expected-failures>
<test name="optional_test_inplace_fail2"/>
<toolset name="gcc-3_3-darwin"/>
- <note author="Fernando Cacciola" refid="2"/>
+ <note author="Fernando Cacciola" refid="optional-compiler-bug"/>
</mark-expected-failures>
</library>
@@ -2845,6 +2860,13 @@
<toolset name="*"/>
<note refid="40" author="Boris Gubenko"/>
</mark-expected-failures>
+ <mark-expected-failures>
+ <test name="sp_convertible_test"/>
+ <test name="wp_convertible_test"/>
+ <test name="ip_convertible_test"/>
+ <toolset name="borland-*"/>
+ <note refid="31" author="Peter Dimov"/>
+ </mark-expected-failures>
</library>
<!-- spirit -->
@@ -4131,8 +4153,8 @@
<toolset name="pathscale-3.1"/>
<toolset name="sun-5.*"/>
<note author="Thorsten Ottosen">
- For codewarrior, the cause of this problem is unknown. Please
- submit a patch. Other failures are due to problems with
+ For codewarrior, the cause of this problem is unknown. Please
+ submit a patch. Other failures are due to problems with
the serialization library, or to a minor problem with the use of
the library.
</note>
@@ -4346,6 +4368,7 @@
<!-- range -->
<library name="range">
<mark-unusable>
+ <toolset name="borland-*"/>
<toolset name="mipspro"/>
<toolset name="dmc-8_43-stlport-4_5_3"/>
<toolset name="gcc-2.95.3*"/>
@@ -4361,6 +4384,15 @@
<note refid="27" author="Thorsten Ottosen"/>
</mark-expected-failures>
<mark-expected-failures>
+ <test name="adl_conformance"/>
+ <toolset name="msvc-7.1"/>
+ <note author="Neil Groves">
+ This test is designed to give users visibility of the ADL problems with their compilers.
+ Lack of Argument Dependent Lookup changes how one can extend the library. The lack of
+ ADL is worked-around internally so that most of the functionality is preserved.
+ </note>
+ </mark-expected-failures>
+ <mark-expected-failures>
<test name="iterator_range"/>
<toolset name="msvc-stlport"/>
<toolset name="msvc-6.5_stlport4"/>
@@ -4375,6 +4407,14 @@
</note>
</mark-expected-failures>
<mark-expected-failures>
+ <test name="push_front"/>
+ <toolset name="msvc-9.0~stlport5.2"/>
+ <note author="Neil Groves">
+ push_front fails the unit test in this configuration. I do not have this
+ configuration available to determine if a work-around is possible.
+ </note>
+ </mark-expected-failures>
+ <mark-expected-failures>
<test name="reversible_range"/>
<toolset name="hp_cxx-65*"/>
<note author="Thorsten Ottosen">
@@ -4431,6 +4471,29 @@
</mark-expected-failures>
</library>
+ <!-- ratio -->
+ <library name="ratio">
+ <mark-unusable>
+ <toolset name="borland-*"/>
+ <toolset name="pathscale*"/>
+ <note author="Vicente J. Botet Escriba">
+ The compiler does not support features that are essential for the library.
+ </note>
+ </mark-unusable>
+ <mark-expected-failures>
+ <test name="mpl_plus_pass"/>
+ <test name="ratio_ext_pass"/>
+ <toolset name="intel-*-10.1"/>
+ <toolset name="intel-*-11.0"/>
+ <toolset name="intel-*-11.1"/>
+ <note author="Vicente J. Botet Escriba">
+ internal error: assertion failed: copy_template_param_expr.
+ It seems to be already an Intel internal bug database (tracker number #82149).
+ I have no workaround yet.
+ </note>
+ </mark-expected-failures>
+ </library>
+
<!-- regex -->
<library name="regex">
<test name="regex_token_iterator_eg_2">
@@ -4484,7 +4547,7 @@
<toolset name="darwin*"/>
<note author="J. Maddock">
This tests fails because a dependency (Boost.Test)
- fails to initialise correctly. The issue has been
+ fails to initialise correctly. The issue has been
reported to the library's author.
</note>
</mark-expected-failures>
@@ -4648,9 +4711,16 @@
<!-- statechart -->
<library name="statechart">
+ <mark-unusable>
+ <toolset name="borland*"/>
+ <toolset name="sun-5*"/>
+ <toolset name="pgi-1*"/>
+ <note author="Andreas Huber" refid="17"/>
+ </mark-unusable>
<mark-expected-failures>
<test name="DllTestNormal"/>
<toolset name="*mingw*"/>
+ <toolset name="intel-darwin-10*"/>
<toolset name="intel-darwin-11*"/>
<note author="Andreas Huber">
A runtime failure of this test indicates that this platform
@@ -4663,11 +4733,13 @@
</mark-expected-failures>
<mark-expected-failures reason="?">
<test name="FifoSchedulerTest*"/>
- <toolset name="intel-darwin-11*"/>
+ <toolset name="darwin-4.4"/>
+ <toolset name="intel-darwin-10*"/>
<note author="Andreas Huber" refid="29"/>
</mark-expected-failures>
<mark-expected-failures reason="?">
<test name="TransitionTest*"/>
+ <toolset name="intel-darwin-10*"/>
<toolset name="intel-linux-10*"/>
<toolset name="gcc-4.3.4_0x"/>
<toolset name="pathscale-3.2"/>
@@ -4937,7 +5009,7 @@
Probably work-round-able if someone would care to look into these.
</note>
</mark-expected-failures>
- <mark-expected-failures>
+ <mark-expected-failures>
<test name="function_traits_test"/>
<test name="remove_bounds_test"/>
<test name="remove_const_test"/>
@@ -5175,7 +5247,7 @@
be work-round-able if anyone cares enough to look into them.
</note>
</mark-expected-failures>
- <mark-expected-failures>
+ <mark-expected-failures>
<test name="test_mem_fn_tricky"/>
<test name="test_bind_tricky"/>
<test name="test_ref_wrapper_tricky"/>
@@ -5810,7 +5882,7 @@
Related Boost mailing list discussion:
http://lists.boost.org/Archives/boost/2008/11/144465.php
CodeGear bug reports on this issue:
- http://qc.codegear.com/wc/qcmain.aspx?d=68959
+ http://qc.codegear.com/wc/qcmain.aspx?d=68959
http://qc.codegear.com/wc/qcmain.aspx?d=69196
</note>
</mark-expected-failures>
@@ -5822,7 +5894,7 @@
Borland 5.9.3 has an error (E2285) when trying to pass a
multi-dimensional array by reference to a function template.
A bug report by Christopher Yeleighton appears related:
- "The compiler obligatorily converts member arrays to pointers"
+ "The compiler obligatorily converts member arrays to pointers"
http://qc.codegear.com/wc/qcmain.aspx?d=10267
</note>
</mark-expected-failures>
@@ -5864,6 +5936,17 @@
<note refid="3" author="D. Gregor"/>
</mark-failure>
</test>
+ <test name="value_init_test">
+ <mark-failure>
+ <toolset name="intel-9.0*"/>
+ <toolset name="intel-linux-9.0*"/>
+ <note author="Niels Dekker" date="2009-07-01">
+ When I made the conversion from value_initialized<T> to T&
+ const-correct, this specific compiler version gave compile errors.
+ See also: Ticket #2548 - "Let's fix the logical constness of value_initialized!"
+ </note>
+ </mark-failure>
+ </test>
<mark-expected-failures>
<test name="value_init_test"/>
<toolset name="msvc-6.5*"/>
@@ -5888,7 +5971,6 @@
</mark-expected-failures>
</library>
-
<!-- uuid -->
<library name="uuid">
<mark-expected-failures>
@@ -5933,7 +6015,7 @@
<test name="test_include1"/>
<toolset name="borland-6.2.1"/>
<note author="Andy Tompkins">
- The test relies on Boost.Iterator (iterator_facade)
+ The test relies on Boost.Iterator (iterator_facade)
which is not supported on this toolset.
</note>
</mark-expected-failures>
@@ -6349,4 +6431,9 @@
This test fails when BOOST_UBLAS_NO_NESTED_CLASS_RELATION is defined.
</note>
+ <note id="49">
+ This test fails because MinGW apparently does not always catch exceptions properly.
+ </note>
+
</explicit-failures-markup>
+
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