Compare commits

...

16 Commits

Author SHA1 Message Date
2fb684b220 Created a branch from trunk
[SVN r38959]
2007-08-26 05:34:35 +00:00
d08c9bfab1 Update to V2
[SVN r38530]
2007-08-08 19:42:04 +00:00
19b8004830 Fixed a typo.
[SVN r36896]
2007-02-06 00:23:26 +00:00
0af5b76442 Merge fixed links from RC_1_34_0.
[SVN r36660]
2007-01-07 23:50:56 +00:00
defe1c94d6 Add copyright, license
[SVN r35905]
2006-11-07 19:11:57 +00:00
76c2151830 avoid g++ -Wall -W "unused parameter" warnings
[SVN r32373]
2006-01-22 19:29:32 +00:00
2d13a60d05 applied patch by Rupert Kittinger, avoids potentially undefined behavior
[SVN r30690]
2005-08-26 16:03:05 +00:00
9c6ef41dfe Large patch from Ulrich Eckhardt to fix support for EVC++ 4.
[SVN r30670]
2005-08-25 16:27:28 +00:00
5686969287 Merged from 1.33.0 release
[SVN r30540]
2005-08-12 13:02:37 +00:00
a17ce206f2 replaced BOOST_TEST
[SVN r27057]
2005-02-03 13:55:45 +00:00
34690282fe fixes in element<> for BCB compilers, with help from Tobias Schwinger
[SVN r25763]
2004-10-18 06:03:18 +00:00
bc3d37ec2b c++boost.gif -> boost.png replacement
[SVN r25573]
2004-10-05 15:45:52 +00:00
eea1937afc Converted to Boost Software License, Version 1.0
[SVN r24096]
2004-07-27 03:43:34 +00:00
8820994ffd Doug Gregor -> Douglas Gregor
[SVN r24016]
2004-07-25 02:29:29 +00:00
045d761ab5 suppressed scoping the call get_class to the detail namespace
[SVN r23113]
2004-06-17 13:51:33 +00:00
63c93b59b4 port to vacpp:
added default template arguments explicitly (Joaquin M Lopez)
  removed member template keyword (Toon Knapen)


[SVN r23109]
2004-06-17 07:01:13 +00:00
13 changed files with 195 additions and 161 deletions

View File

@ -4,7 +4,7 @@
<body bgcolor="#FFFFFF" text="#000000">
<IMG SRC="../../../c++boost.gif"
<IMG SRC="../../../boost.png"
ALT="C++ Boost" width="277" height="86">
<h1>Tuple Library : design decisions rationale</h1>

View File

@ -4,7 +4,7 @@
<title>Tuple library advanced features</title>
<body bgcolor="#FFFFFF" text="#000000">
<IMG SRC="../../../c++boost.gif"
<IMG SRC="../../../boost.png"
ALT="C++ Boost" width="277" height="86">
</head>
@ -101,7 +101,7 @@ For a one-element cons list the tail argument (<code>null_type</code>) can be om
<p>
The template <code>access_traits</code> defines three type functions. Let <code>T</code> be a type of an element in a tuple:
<ol>
<li><code>access_traits&lt;T&gt;::type</code> maps <code>T</code> to the return type of the non-const access functions (nonmeber and member <code>get</code> functions, and the <code>get_head</code> function).</li>
<li><code>access_traits&lt;T&gt;::non_const_type</code> maps <code>T</code> to the return type of the non-const access functions (nonmeber and member <code>get</code> functions, and the <code>get_head</code> function).</li>
<li><code>access_traits&lt;T&gt;::const_type</code> maps <code>T</code> to the return type of the const access functions.</li>
<li><code>access_traits&lt;T&gt;::parameter_type</code> maps <code>T</code> to the parameter type of the tuple constructor.</li>
</ol>

View File

@ -4,7 +4,7 @@
</head>
<body bgcolor="#FFFFFF" text="#000000">
<IMG SRC="../../../c++boost.gif"
<IMG SRC="../../../boost.png"
ALT="C++ Boost" width="277" height="86">
<h1>The Boost Tuple Library</h1>
@ -500,12 +500,12 @@ The idea for the tie mechanism came from an old usenet article by Ian McCulloch,
<p>
<a name="publ_1"></a>[1]
J&auml;rvi J.: <i>Tuples and multiple return values in C++</i>, TUCS Technical Report No 249, 1999 (<a href="http://www.tucs.fi/Publications">http://www.tucs.fi/Publications</a>).
J&auml;rvi J.: <i>Tuples and multiple return values in C++</i>, TUCS Technical Report No 249, 1999<!-- (<a href="http://www.tucs.fi/Publications">http://www.tucs.fi/Publications</a>)-->.
</p>
<p>
<a name="publ_2"></a>[2]
J&auml;rvi J.: <i>ML-Style Tuple Assignment in Standard C++ - Extending the Multiple Return Value Formalism</i>, TUCS Technical Report No 267, 1999 (<a href="http://www.tucs.fi/Publications">http://www.tucs.fi/Publications</a>).
J&auml;rvi J.: <i>ML-Style Tuple Assignment in Standard C++ - Extending the Multiple Return Value Formalism</i>, TUCS Technical Report No 267, 1999<!-- (<a href="http://www.tucs.fi/Publications">http://www.tucs.fi/Publications</a>)-->.
</p>
<p>

View File

@ -2,14 +2,9 @@
// Copyright (C) 1999, 2000 Jaakko J<>rvi (jaakko.jarvi@cs.utu.fi)
//
// Permission to copy, use, sell and distribute this software is granted
// provided this copyright notice appears in all copies.
// Permission to modify the code and to distribute modified code is granted
// provided this copyright notice appears in all copies, and a notice
// that the code was modified is included with the copyright notice.
//
// This software is provided "as is" without express or implied warranty,
// and with no claim as to its suitability for any purpose.
// Distributed under the Boost Software License, Version 1.0. (See
// accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// For more information, see http://www.boost.org
@ -18,7 +13,7 @@
// Fixed return types for get_head/get_tail
// ( and other bugs ) per suggestion of Jens Maurer
// simplified element type accessors + bug fix (Jeremy Siek)
// Several changes/additions according to suggestions by Doug Gregor,
// Several changes/additions according to suggestions by Douglas Gregor,
// William Kempf, Vesa Karvonen, John Max Skaller, Ed Brey, Beman Dawes,
// David Abrahams.
@ -43,6 +38,8 @@
#include "boost/type_traits/cv_traits.hpp"
#include "boost/type_traits/function_traits.hpp"
#include "boost/detail/workaround.hpp" // needed for BOOST_WORKAROUND
namespace boost {
namespace tuples {
@ -97,12 +94,22 @@ struct get_class {
template<class RET, class HT, class TT >
inline static RET get(const cons<HT, TT>& t)
{
#if BOOST_WORKAROUND(__IBMCPP__,==600)
// vacpp 6.0 is not very consistent regarding the member template keyword
// Here it generates an error when the template keyword is used.
return get_class<N-1>::get<RET>(t.tail);
#else
return get_class<N-1>::BOOST_NESTED_TEMPLATE get<RET>(t.tail);
#endif
}
template<class RET, class HT, class TT >
inline static RET get(cons<HT, TT>& t)
{
#if BOOST_WORKAROUND(__IBMCPP__,==600)
return get_class<N-1>::get<RET>(t.tail);
#else
return get_class<N-1>::BOOST_NESTED_TEMPLATE get<RET>(t.tail);
#endif
}
};
@ -128,6 +135,8 @@ struct get_class<0> {
// Nth element ot T, first element is at index 0
// -------------------------------------------------------
#ifndef BOOST_NO_CV_SPECIALIZATIONS
template<int N, class T>
struct element
{
@ -149,14 +158,69 @@ private:
typedef typename T::tail_type Next;
typedef typename element<N-1, Next>::type unqualified_type;
public:
#if BOOST_WORKAROUND(__BORLANDC__,<0x600)
typedef const unqualified_type type;
#else
typedef typename boost::add_const<unqualified_type>::type type;
#endif
};
template<class T>
struct element<0,const T>
{
#if BOOST_WORKAROUND(__BORLANDC__,<0x600)
typedef const typename T::head_type type;
#else
typedef typename boost::add_const<typename T::head_type>::type type;
#endif
};
#else // def BOOST_NO_CV_SPECIALIZATIONS
namespace detail {
template<int N, class T, bool IsConst>
struct element_impl
{
private:
typedef typename T::tail_type Next;
public:
typedef typename element_impl<N-1, Next, IsConst>::type type;
};
template<int N, class T>
struct element_impl<N, T, true /* IsConst */>
{
private:
typedef typename T::tail_type Next;
public:
typedef const typename element_impl<N-1, Next, true>::type type;
};
template<class T>
struct element_impl<0, T, false /* IsConst */>
{
typedef typename T::head_type type;
};
template<class T>
struct element_impl<0, T, true /* IsConst */>
{
typedef const typename T::head_type type;
};
} // end of namespace detail
template<int N, class T>
struct element:
public detail::element_impl<N, T, ::boost::is_const<T>::value>
{
};
#endif
// -get function templates -----------------------------------------------
// Usage: get<N>(aTuple)
@ -194,11 +258,17 @@ inline typename access_traits<
typename element<N, cons<HT, TT> >::type
>::non_const_type
get(cons<HT, TT>& c BOOST_APPEND_EXPLICIT_TEMPLATE_NON_TYPE(int, N)) {
#if BOOST_WORKAROUND(__IBMCPP__,==600 )
return detail::get_class<N>::
#else
return detail::get_class<N>::BOOST_NESTED_TEMPLATE
#endif
get<
typename access_traits<
typename element<N, cons<HT, TT> >::type
>::non_const_type>(c);
>::non_const_type,
HT,TT
>(c);
}
// get function for const cons-lists, returns a const reference to
@ -209,11 +279,17 @@ inline typename access_traits<
typename element<N, cons<HT, TT> >::type
>::const_type
get(const cons<HT, TT>& c BOOST_APPEND_EXPLICIT_TEMPLATE_NON_TYPE(int, N)) {
#if BOOST_WORKAROUND(__IBMCPP__,==600)
return detail::get_class<N>::
#else
return detail::get_class<N>::BOOST_NESTED_TEMPLATE
#endif
get<
typename access_traits<
typename element<N, cons<HT, TT> >::type
>::const_type>(c);
>::const_type,
HT,TT
>(c);
}
// -- the cons template --------------------------------------------------
@ -286,7 +362,7 @@ struct cons {
template <class T2, class T3, class T4, class T5,
class T6, class T7, class T8, class T9, class T10>
cons( const null_type& t1, T2& t2, T3& t3, T4& t4, T5& t5,
cons( const null_type& /*t1*/, T2& t2, T3& t3, T4& t4, T5& t5,
T6& t6, T7& t7, T8& t8, T9& t9, T10& t10 )
: head (),
tail (t2, t3, t4, t5, t6, t7, t8, t9, t10, detail::cnull())

View File

@ -1,17 +1,12 @@
// - tuple_basic_no_partial_spec.hpp -----------------------------------------
// Copyright (C) 1999, 2000 Jaakko J<>rvi (jaakko.jarvi@cs.utu.fi)
// Copyright (C) 2001 Doug Gregor (gregod@rpi.edu)
// Copyright (C) 2001 Douglas Gregor (gregod@rpi.edu)
// Copyright (C) 2001 Gary Powell (gary.powell@sierra.com)
//
// Permission to copy, use, sell and distribute this software is granted
// provided this copyright notice appears in all copies.
// Permission to modify the code and to distribute modified code is granted
// provided this copyright notice appears in all copies, and a notice
// that the code was modified is included with the copyright notice.
//
// This software is provided "as is" without express or implied warranty,
// and with no claim as to its suitability for any purpose.
// Distributed under the Boost Software License, Version 1.0. (See
// accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// For more information, see http://www.boost.org or http://lambda.cs.utu.fi
@ -110,7 +105,7 @@ namespace tuples {
// Each of vc6 and vc7 seem to require a different formulation
// of this return type
template <class H, class T>
#if BOOST_WORKAROUND(BOOST_MSVC, == 1200)
#if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
static typename add_reference<typename add_const<T>::type>::type
#else
static typename add_const_reference<T>::type

View File

@ -2,14 +2,9 @@
// Copyright (C) 1999, 2000 Jaakko J<>rvi (jaakko.jarvi@cs.utu.fi)
//
// Permission to copy, use, sell and distribute this software is granted
// provided this copyright notice appears in all copies.
// Permission to modify the code and to distribute modified code is granted
// provided this copyright notice appears in all copies, and a notice
// that the code was modified is included with the copyright notice.
//
// This software is provided "as is" without express or implied warranty,
// and with no claim as to its suitability for any purpose.
// Distributed under the Boost Software License, Version 1.0. (See
// accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// For more information, see http://www.boost.org

View File

@ -3,14 +3,9 @@
// Copyright (C) 2001 Jaakko J<>rvi (jaakko.jarvi@cs.utu.fi)
// Copyright (C) 2001 Gary Powell (gary.powell@sierra.com)
//
// Permission to copy, use, sell and distribute this software is granted
// provided this copyright notice appears in all copies.
// Permission to modify the code and to distribute modified code is granted
// provided this copyright notice appears in all copies, and a notice
// that the code was modified is included with the copyright notice.
//
// This software is provided "as is" without express or implied warranty,
// and with no claim as to its suitability for any purpose.
// Distributed under the Boost Software License, Version 1.0. (See
// accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
//
// For more information, see http://www.boost.org
//

View File

@ -3,14 +3,9 @@
// Copyright (C) 2001 Jaakko J<>rvi (jaakko.jarvi@cs.utu.fi)
// 2001 Gary Powell (gary.powell@sierra.com)
//
// Permission to copy, use, sell and distribute this software is granted
// provided this copyright notice appears in all copies.
// Permission to modify the code and to distribute modified code is granted
// provided this copyright notice appears in all copies, and a notice
// that the code was modified is included with the copyright notice.
//
// This software is provided "as is" without express or implied warranty,
// and with no claim as to its suitability for any purpose.
// Distributed under the Boost Software License, Version 1.0. (See
// accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// For more information, see http://www.boost.org
// ----------------------------------------------------------------------------
@ -354,7 +349,7 @@ extract_and_check_delimiter(
char c;
if (is_delimiter) {
is >> c;
if (c!=d) {
if (is.good() && c!=d) {
is.setstate(std::ios::failbit);
}
}
@ -448,7 +443,7 @@ extract_and_check_delimiter(
CharType c;
if (is_delimiter) {
is >> c;
if (c!=d) {
if (is.good() && c!=d) {
is.setstate(std::ios::failbit);
}
}

View File

@ -3,6 +3,11 @@
<meta http-equiv="refresh" content="0; URL=doc/tuple_users_guide.html">
</head>
<body>
Automatic redirection failed, please go to <a href="doc/tuple_users_guide.html">doc/tuple_users_guide.html</a>
Automatic redirection failed, please go to <a href="doc/tuple_users_guide.html">doc/tuple_users_guide.html</a>
&nbsp;<hr>
<p><EFBFBD> Copyright Beman Dawes, 2001</p>
<p>Distributed under the Boost Software License, Version 1.0. (See accompanying
file <a href="../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or copy
at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</p>
</body>
</html>
</html>

View File

@ -1,20 +1,8 @@
subproject libs/tuple/test ;
unit-test tuple_test_bench
: tuple_test_bench.cpp
<lib>../../test/build/boost_test_exec_monitor
: <sysinclude>$(BOOST_ROOT)
;
unit-test io_test
: io_test.cpp
<lib>../../test/build/boost_test_exec_monitor
: <sysinclude>$(BOOST_ROOT)
;
unit-test another_tuple_test_bench
: another_tuple_test_bench.cpp
<lib>../../test/build/boost_test_exec_monitor
: <sysinclude>$(BOOST_ROOT)
;
project : requirements <library>/boost/test//boost_test_exec_monitor ;
test-suite tuple :
[ run tuple_test_bench.cpp ]
[ run io_test.cpp ]
[ run another_tuple_test_bench.cpp ]
;

View File

@ -1,13 +1,8 @@
// Copyright (C) 1999, 2000 Jaakko J<>rvi (jaakko.jarvi@cs.utu.fi)
//
// Permission to copy, use, sell and distribute this software is granted
// provided this copyright notice appears in all copies.
// Permission to modify the code and to distribute modified code is granted
// provided this copyright notice appears in all copies, and a notice
// that the code was modified is included with the copyright notice.
//
// This software is provided "as is" without express or implied warranty,
// and with no claim as to its suitability for any purpose.
// Distributed under the Boost Software License, Version 1.0. (See
// accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// For more information, see http://www.boost.org

View File

@ -1,13 +1,8 @@
// Copyright (C) 1999, 2000 Jaakko J<>rvi (jaakko.jarvi@cs.utu.fi)
//
// Permission to copy, use, sell and distribute this software is granted
// provided this copyright notice appears in all copies.
// Permission to modify the code and to distribute modified code is granted
// provided this copyright notice appears in all copies, and a notice
// that the code was modified is included with the copyright notice.
//
// This software is provided "as is" without express or implied warranty,
// and with no claim as to its suitability for any purpose.
// Distributed under the Boost Software License, Version 1.0. (See
// accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// For more information, see http://www.boost.org
@ -57,7 +52,7 @@ int test_main(int argc, char * argv[] ) {
os1 << set_close(']');
os1 << set_delimiter(',');
os1 << make_tuple(1, 2, 3);
BOOST_TEST (os1.str() == std::string("[1,2,3]") );
BOOST_CHECK (os1.str() == std::string("[1,2,3]") );
{
useThisOStringStream os2;
@ -67,13 +62,13 @@ int test_main(int argc, char * argv[] ) {
os2 << set_delimiter(':');
#if !defined (BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
os2 << make_tuple("TUPU", "HUPU", "LUPU", 4.5);
BOOST_TEST (os2.str() == std::string("(TUPU:HUPU:LUPU:4.5)") );
BOOST_CHECK (os2.str() == std::string("(TUPU:HUPU:LUPU:4.5)") );
#endif
}
// The format is still [a, b, c] for os1
os1 << make_tuple(1, 2, 3);
BOOST_TEST (os1.str() == std::string("[1,2,3][1,2,3]") );
BOOST_CHECK (os1.str() == std::string("[1,2,3][1,2,3]") );
ofstream tmp("temp.tmp");
@ -91,13 +86,13 @@ int test_main(int argc, char * argv[] ) {
#if !defined (BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
tmp3 >> j;
BOOST_TEST (tmp3.good() );
BOOST_CHECK (tmp3.good() );
#endif
tmp3 >> set_delimiter(':');
tuple<int, int, int> i;
tmp3 >> i;
BOOST_TEST (tmp3.good() );
BOOST_CHECK (tmp3.good() );
tmp3.close();
@ -106,8 +101,8 @@ int test_main(int argc, char * argv[] ) {
useThisIStringStream is("(100 200 300)");
tuple<int, int, int> ti;
BOOST_TEST(bool(is >> ti));
BOOST_TEST(ti == make_tuple(100, 200, 300));
BOOST_CHECK(bool(is >> ti));
BOOST_CHECK(ti == make_tuple(100, 200, 300));
// Note that strings are problematic:

View File

@ -1,13 +1,8 @@
// Copyright (C) 1999, 2000 Jaakko J<>rvi (jaakko.jarvi@cs.utu.fi)
//
// Permission to copy, use, sell and distribute this software is granted
// provided this copyright notice appears in all copies.
// Permission to modify the code and to distribute modified code is granted
// provided this copyright notice appears in all copies, and a notice
// that the code was modified is included with the copyright notice.
//
// This software is provided "as is" without express or implied warranty,
// and with no claim as to its suitability for any purpose.
// Distributed under the Boost Software License, Version 1.0. (See
// accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// For more information, see http://www.boost.org
@ -112,32 +107,32 @@ construction_test()
// MSVC 6.0 just cannot find get without the namespace qualifier
tuple<int> t1;
BOOST_TEST(get<0>(t1) == int());
BOOST_CHECK(get<0>(t1) == int());
tuple<float> t2(5.5f);
BOOST_TEST(get<0>(t2) > 5.4f && get<0>(t2) < 5.6f);
BOOST_CHECK(get<0>(t2) > 5.4f && get<0>(t2) < 5.6f);
tuple<foo> t3(foo(12));
BOOST_TEST(get<0>(t3) == foo(12));
BOOST_CHECK(get<0>(t3) == foo(12));
tuple<double> t4(t2);
BOOST_TEST(get<0>(t4) > 5.4 && get<0>(t4) < 5.6);
BOOST_CHECK(get<0>(t4) > 5.4 && get<0>(t4) < 5.6);
tuple<int, float> t5;
BOOST_TEST(get<0>(t5) == int());
BOOST_TEST(get<1>(t5) == float());
BOOST_CHECK(get<0>(t5) == int());
BOOST_CHECK(get<1>(t5) == float());
tuple<int, float> t6(12, 5.5f);
BOOST_TEST(get<0>(t6) == 12);
BOOST_TEST(get<1>(t6) > 5.4f && get<1>(t6) < 5.6f);
BOOST_CHECK(get<0>(t6) == 12);
BOOST_CHECK(get<1>(t6) > 5.4f && get<1>(t6) < 5.6f);
tuple<int, float> t7(t6);
BOOST_TEST(get<0>(t7) == 12);
BOOST_TEST(get<1>(t7) > 5.4f && get<1>(t7) < 5.6f);
BOOST_CHECK(get<0>(t7) == 12);
BOOST_CHECK(get<1>(t7) > 5.4f && get<1>(t7) < 5.6f);
tuple<long, double> t8(t6);
BOOST_TEST(get<0>(t8) == 12);
BOOST_TEST(get<1>(t8) > 5.4f && get<1>(t8) < 5.6f);
BOOST_CHECK(get<0>(t8) == 12);
BOOST_CHECK(get<1>(t8) > 5.4f && get<1>(t8) < 5.6f);
dummy(
tuple<no_def_constructor, no_def_constructor, no_def_constructor>(
@ -180,27 +175,27 @@ void element_access_test()
int i = get<0>(t);
int i2 = get<3>(t);
BOOST_TEST(i == 1 && i2 == 2);
BOOST_CHECK(i == 1 && i2 == 2);
int j = get<0>(ct);
BOOST_TEST(j == 1);
BOOST_CHECK(j == 1);
get<0>(t) = 5;
BOOST_TEST(t.head == 5);
BOOST_CHECK(t.head == 5);
// get<0>(ct) = 5; // can't assign to const
double e = get<1>(t);
BOOST_TEST(e > 2.69 && e < 2.71);
BOOST_CHECK(e > 2.69 && e < 2.71);
get<1>(t) = 3.14+i;
BOOST_TEST(get<1>(t) > 4.13 && get<1>(t) < 4.15);
BOOST_CHECK(get<1>(t) > 4.13 && get<1>(t) < 4.15);
// get<4>(t) = A(); // can't assign to const
// dummy(get<5>(ct)); // illegal index
++get<0>(t);
BOOST_TEST(get<0>(t) == 6);
BOOST_CHECK(get<0>(t) == 6);
BOOST_STATIC_ASSERT((boost::is_const<boost::tuples::element<0, tuple<int, float> >::type>::value != true));
#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
@ -229,13 +224,13 @@ copy_test()
tuple<int, char> t1(4, 'a');
tuple<int, char> t2(5, 'b');
t2 = t1;
BOOST_TEST(get<0>(t1) == get<0>(t2));
BOOST_TEST(get<1>(t1) == get<1>(t2));
BOOST_CHECK(get<0>(t1) == get<0>(t2));
BOOST_CHECK(get<1>(t1) == get<1>(t2));
tuple<long, std::string> t3(2, "a");
t3 = t1;
BOOST_TEST((double)get<0>(t1) == get<0>(t3));
BOOST_TEST(get<1>(t1) == get<1>(t3)[0]);
BOOST_CHECK((double)get<0>(t1) == get<0>(t3));
BOOST_CHECK(get<1>(t1) == get<1>(t3)[0]);
// testing copy and assignment with implicit conversions between elements
// testing tie
@ -247,9 +242,9 @@ copy_test()
int i; char c; double d;
tie(i, c, d) = make_tuple(1, 'a', 5.5);
BOOST_TEST(i==1);
BOOST_TEST(c=='a');
BOOST_TEST(d>5.4 && d<5.6);
BOOST_CHECK(i==1);
BOOST_CHECK(c=='a');
BOOST_CHECK(d>5.4 && d<5.6);
}
void
@ -261,10 +256,10 @@ mutate_test()
get<2>(t1) = false;
get<3>(t1) = foo(5);
BOOST_TEST(get<0>(t1) == 6);
BOOST_TEST(get<1>(t1) > 2.1f && get<1>(t1) < 2.3f);
BOOST_TEST(get<2>(t1) == false);
BOOST_TEST(get<3>(t1) == foo(5));
BOOST_CHECK(get<0>(t1) == 6);
BOOST_CHECK(get<1>(t1) > 2.1f && get<1>(t1) < 2.3f);
BOOST_CHECK(get<2>(t1) == false);
BOOST_CHECK(get<3>(t1) == foo(5));
}
// ----------------------------------------------------------------------------
@ -275,13 +270,13 @@ void
make_tuple_test()
{
tuple<int, char> t1 = make_tuple(5, 'a');
BOOST_TEST(get<0>(t1) == 5);
BOOST_TEST(get<1>(t1) == 'a');
BOOST_CHECK(get<0>(t1) == 5);
BOOST_CHECK(get<1>(t1) == 'a');
tuple<int, std::string> t2;
t2 = make_tuple((short int)2, std::string("Hi"));
BOOST_TEST(get<0>(t2) == 2);
BOOST_TEST(get<1>(t2) == "Hi");
BOOST_CHECK(get<0>(t2) == 2);
BOOST_CHECK(get<1>(t2) == "Hi");
A a = A(); B b;
@ -293,7 +288,7 @@ make_tuple_test()
make_tuple(boost::ref(ca));
// the result of make_tuple is assignable:
BOOST_TEST(make_tuple(2, 4, 6) ==
BOOST_CHECK(make_tuple(2, 4, 6) ==
(make_tuple(1, 2, 3) = make_tuple(2, 4, 6)));
#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
@ -341,19 +336,19 @@ tie_test()
foo c(5);
tie(a, b, c) = make_tuple(2, 'a', foo(3));
BOOST_TEST(a == 2);
BOOST_TEST(b == 'a');
BOOST_TEST(c == foo(3));
BOOST_CHECK(a == 2);
BOOST_CHECK(b == 'a');
BOOST_CHECK(c == foo(3));
tie(a, tuples::ignore, c) = make_tuple((short int)5, false, foo(5));
BOOST_TEST(a == 5);
BOOST_TEST(b == 'a');
BOOST_TEST(c == foo(5));
BOOST_CHECK(a == 5);
BOOST_CHECK(b == 'a');
BOOST_CHECK(c == foo(5));
// testing assignment from std::pair
int i, j;
tie (i, j) = std::make_pair(1, 2);
BOOST_TEST(i == 1 && j == 2);
BOOST_CHECK(i == 1 && j == 2);
tuple<int, int, float> ta;
#ifdef E11
@ -373,13 +368,13 @@ equality_test()
{
tuple<int, char> t1(5, 'a');
tuple<int, char> t2(5, 'a');
BOOST_TEST(t1 == t2);
BOOST_CHECK(t1 == t2);
tuple<int, char> t3(5, 'b');
tuple<int, char> t4(2, 'a');
BOOST_TEST(t1 != t3);
BOOST_TEST(t1 != t4);
BOOST_TEST(!(t1 != t2));
BOOST_CHECK(t1 != t3);
BOOST_CHECK(t1 != t4);
BOOST_CHECK(!(t1 != t2));
}
@ -393,14 +388,14 @@ ordering_test()
tuple<int, float> t1(4, 3.3f);
tuple<short, float> t2(5, 3.3f);
tuple<long, double> t3(5, 4.4);
BOOST_TEST(t1 < t2);
BOOST_TEST(t1 <= t2);
BOOST_TEST(t2 > t1);
BOOST_TEST(t2 >= t1);
BOOST_TEST(t2 < t3);
BOOST_TEST(t2 <= t3);
BOOST_TEST(t3 > t2);
BOOST_TEST(t3 >= t2);
BOOST_CHECK(t1 < t2);
BOOST_CHECK(t1 <= t2);
BOOST_CHECK(t2 > t1);
BOOST_CHECK(t2 >= t1);
BOOST_CHECK(t2 < t3);
BOOST_CHECK(t2 <= t3);
BOOST_CHECK(t3 > t2);
BOOST_CHECK(t3 >= t2);
}
@ -417,7 +412,7 @@ void cons_test()
cons<const int, cons<volatile float, null_type> > b(2,a);
int i = 3;
cons<int&, cons<const int, cons<volatile float, null_type> > > c(i, b);
BOOST_TEST(make_tuple(3,2,1)==c);
BOOST_CHECK(make_tuple(3,2,1)==c);
cons<char, cons<int, cons<float, null_type> > > x;
dummy(x);
@ -429,8 +424,8 @@ void cons_test()
void const_tuple_test()
{
const tuple<int, float> t1(5, 3.3f);
BOOST_TEST(get<0>(t1) == 5);
BOOST_TEST(get<1>(t1) == 3.3f);
BOOST_CHECK(get<0>(t1) == 5);
BOOST_CHECK(get<1>(t1) == 3.3f);
}
// ----------------------------------------------------------------------------