mirror of
https://github.com/boostorg/utility.git
synced 2026-01-27 19:32:15 +00:00
https://svn.boost.org/svn/boost/trunk ........ r40889 | nikiml | 2007-11-07 08:06:55 -0800 (Wed, 07 Nov 2007) | 1 line added forgotten array_object_manager_traits::get_pytype ........ r40890 | bemandawes | 2007-11-07 08:08:09 -0800 (Wed, 07 Nov 2007) | 1 line Copyright and/or License cleanup ........ r40892 | nesotto | 2007-11-07 08:54:10 -0800 (Wed, 07 Nov 2007) | 1 line changed constants to inline function to avoid ODR problems ........ r40893 | garcia | 2007-11-07 09:06:19 -0800 (Wed, 07 Nov 2007) | 2 lines changed url to the right one. ........ r40894 | johnmaddock | 2007-11-07 09:17:39 -0800 (Wed, 07 Nov 2007) | 1 line Added support for VC9. ........ r40895 | johnmaddock | 2007-11-07 09:21:41 -0800 (Wed, 07 Nov 2007) | 1 line Regenerated docs to add license info. ........ r40896 | johnmaddock | 2007-11-07 09:38:19 -0800 (Wed, 07 Nov 2007) | 2 lines Removed PDF docs: we'll put these somewhere else. Fixed some license/copyright issues. ........ r40897 | igaztanaga | 2007-11-07 09:55:18 -0800 (Wed, 07 Nov 2007) | 1 line Increased shared memory size, since it was insufficient for 64 bit applications ........ r40898 | jhunold | 2007-11-07 10:06:31 -0800 (Wed, 07 Nov 2007) | 4 lines Fix: remove <user-interface>gui from usage-requirements of QtGui. Rationale: <user-interface>gui merely disables console output window on <target-os>windows. But users often need console debug output when running Gui apps. ........ r40900 | johnmaddock | 2007-11-07 10:26:11 -0800 (Wed, 07 Nov 2007) | 1 line Added license info. ........ r40901 | johnmaddock | 2007-11-07 10:27:08 -0800 (Wed, 07 Nov 2007) | 1 line Added license info. ........ r40902 | johnmaddock | 2007-11-07 10:29:00 -0800 (Wed, 07 Nov 2007) | 1 line Added copyright. ........ r40903 | johnmaddock | 2007-11-07 10:38:23 -0800 (Wed, 07 Nov 2007) | 1 line Added license info. ........ r40906 | guwi17 | 2007-11-07 11:34:03 -0800 (Wed, 07 Nov 2007) | 2 lines - io.hpp: added missing include ........ r40907 | danieljames | 2007-11-07 12:27:25 -0800 (Wed, 07 Nov 2007) | 1 line Copied Joel's license changes to the xhtml stylesheet. ........ r40912 | bemandawes | 2007-11-07 13:54:48 -0800 (Wed, 07 Nov 2007) | 1 line Initial commit. The starting point for the reference documentation is N1975, Filesystem Library Proposal for TR2 (Revision 3). ........ r40914 | pdimov | 2007-11-07 14:47:55 -0800 (Wed, 07 Nov 2007) | 1 line Attempt unspecified bool fix for Sun 5.7-5.9 ........ r40916 | bemandawes | 2007-11-07 17:47:36 -0800 (Wed, 07 Nov 2007) | 1 line Explicitly say 'no top-posting'. Add links to Wikipedia posting article ........ r40918 | bemandawes | 2007-11-07 18:55:21 -0800 (Wed, 07 Nov 2007) | 1 line Cope with larger errno on 64-bit systems ........ r40919 | chris_kohlhoff | 2007-11-07 20:10:14 -0800 (Wed, 07 Nov 2007) | 2 lines Eliminate the need for an extra thread to perform timer dispatching. ........ [SVN r40922]
129 lines
2.8 KiB
C++
129 lines
2.8 KiB
C++
// Copyright 2002, Fernando Luis Cacciola Carballal.
|
|
//
|
|
// 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)
|
|
//
|
|
// Test program for "boost/utility/value_init.hpp"
|
|
//
|
|
// Initial: 21 Agu 2002
|
|
|
|
#include <iostream>
|
|
#include <string>
|
|
|
|
#include "boost/utility/value_init.hpp"
|
|
|
|
#ifdef __BORLANDC__
|
|
#pragma hdrstop
|
|
#endif
|
|
|
|
#include "boost/test/minimal.hpp"
|
|
|
|
//
|
|
// Sample POD type
|
|
//
|
|
struct POD
|
|
{
|
|
POD () : c(0), i(0), f(0) {}
|
|
|
|
POD ( char c_, int i_, float f_ ) : c(c_), i(i_), f(f_) {}
|
|
|
|
friend std::ostream& operator << ( std::ostream& os, POD const& pod )
|
|
{ return os << '(' << pod.c << ',' << pod.i << ',' << pod.f << ')' ; }
|
|
|
|
friend bool operator == ( POD const& lhs, POD const& rhs )
|
|
{ return lhs.f == rhs.f && lhs.c == rhs.c && lhs.i == rhs.i ; }
|
|
|
|
float f;
|
|
char c;
|
|
int i;
|
|
} ;
|
|
|
|
//
|
|
// Sample non POD type
|
|
//
|
|
struct NonPODBase
|
|
{
|
|
virtual ~NonPODBase() {}
|
|
} ;
|
|
struct NonPOD : NonPODBase
|
|
{
|
|
NonPOD () : id() {}
|
|
NonPOD ( std::string const& id_) : id(id_) {}
|
|
|
|
friend std::ostream& operator << ( std::ostream& os, NonPOD const& npod )
|
|
{ return os << '(' << npod.id << ')' ; }
|
|
|
|
friend bool operator == ( NonPOD const& lhs, NonPOD const& rhs )
|
|
{ return lhs.id == rhs.id ; }
|
|
|
|
std::string id ;
|
|
} ;
|
|
|
|
//
|
|
// Sample aggregate POD struct type
|
|
//
|
|
struct AggregatePODStruct
|
|
{
|
|
float f;
|
|
char c;
|
|
int i;
|
|
};
|
|
|
|
bool operator == ( AggregatePODStruct const& lhs, AggregatePODStruct const& rhs )
|
|
{ return lhs.f == rhs.f && lhs.c == rhs.c && lhs.i == rhs.i ; }
|
|
|
|
|
|
template<class T>
|
|
void test ( T const& y, T const& z )
|
|
{
|
|
boost::value_initialized<T> x ;
|
|
BOOST_CHECK ( y == x ) ;
|
|
BOOST_CHECK ( y == boost::get(x) ) ;
|
|
static_cast<T&>(x) = z ;
|
|
boost::get(x) = z ;
|
|
BOOST_CHECK ( x == z ) ;
|
|
|
|
boost::value_initialized<T> const x_c ;
|
|
BOOST_CHECK ( y == x_c ) ;
|
|
BOOST_CHECK ( y == boost::get(x_c) ) ;
|
|
T& x_c_ref = x_c ;
|
|
x_c_ref = z ;
|
|
BOOST_CHECK ( x_c == z ) ;
|
|
|
|
#if !BOOST_WORKAROUND(BOOST_MSVC, < 1300)
|
|
boost::value_initialized<T const> cx ;
|
|
BOOST_CHECK ( y == cx ) ;
|
|
BOOST_CHECK ( y == boost::get(cx) ) ;
|
|
|
|
boost::value_initialized<T const> const cx_c ;
|
|
BOOST_CHECK ( y == cx_c ) ;
|
|
BOOST_CHECK ( y == boost::get(cx_c) ) ;
|
|
#endif
|
|
}
|
|
|
|
int test_main(int, char **)
|
|
{
|
|
test( 0,1234 ) ;
|
|
test( 0.0,12.34 ) ;
|
|
test( POD(0,0,0.0), POD('a',1234,56.78) ) ;
|
|
test( NonPOD( std::string() ), NonPOD( std::string("something") ) ) ;
|
|
|
|
NonPOD NonPOD_object( std::string("NonPOD_object") );
|
|
test<NonPOD *>( 0, &NonPOD_object ) ;
|
|
|
|
AggregatePODStruct zeroInitializedAggregatePODStruct = { 0.0f, '\0', 0 };
|
|
AggregatePODStruct nonZeroInitializedAggregatePODStruct = { 1.25f, 'a', -1 };
|
|
test(zeroInitializedAggregatePODStruct, nonZeroInitializedAggregatePODStruct);
|
|
|
|
return 0;
|
|
}
|
|
|
|
|
|
unsigned int expected_failures = 0;
|
|
|
|
|
|
|
|
|
|
|