Compare commits

...

41 Commits

Author SHA1 Message Date
78eb6b1c8c Fixed two tests to work with C++11/libc++. The tests attempted to compare two ostream&, but didn't really. In c++03, both decayed to void *, which wre then compared. In c++11, the ostreams are comvertible to bool, but only explicitly, and this failed to compile. Use a custom struct with operator== instead of ostream in these tests instead. 2014-02-03 11:46:05 -08:00
a80ac7f5c5 Merge branch 'develop' 2014-02-03 11:29:22 -08:00
e9fe0b6db3 Created first merge point for git 2014-02-03 11:27:41 -08:00
9f06e35e8d Add coverity comments to silence Coverity warnings 2014-01-31 19:50:02 -08:00
250655ad6d Add 'std:' qualification to size_t. Fixes Bug #6184 2014-01-31 19:42:29 -08:00
ea19e9e745 Remove remaining occurances of BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
These evaded scripting.

[SVN r86249]
2013-10-11 23:22:36 +00:00
8d5a27fb85 Function: Remove obsolete GCC version check.
[SVN r86111]
2013-10-01 08:46:26 +00:00
8760088d44 Function: Remove obsolete MSVC version checks.
[SVN r86018]
2013-09-30 00:16:55 +00:00
9245ac2a8f Merge from trunk:
* Update documentation of Boost.Function and add info about rvalues (fixes #8505)

[SVN r84788]
2013-06-15 07:06:26 +00:00
62cce2aaaf Merge fix from trunk; Fixes #7819
[SVN r82280]
2012-12-30 01:07:13 +00:00
352cb183fe Merge macro changes for Boost.Function to release branch
[SVN r82054]
2012-12-17 17:50:38 +00:00
3ac49dc978 Merge from trunk: added move assignment and move constructors to Boost.Function (fixes #7330)
[SVN r80738]
2012-09-28 18:14:00 +00:00
1ebe83a832 Merge doc fixes to release; Fixes #7244
[SVN r80694]
2012-09-24 16:36:41 +00:00
0dc186d891 Merge Change 74916 (extra semicolon) to release
[SVN r74939]
2011-10-13 18:34:19 +00:00
b31584cfb5 Merge fixes to release; Fixes #4717
[SVN r72347]
2011-06-02 15:34:54 +00:00
3193df71b9 Function: Merge from trunk.
- Remove extra definition of operator(), since it's inline anyway.  Fixes
  #4765.
- Make sure that the cv flags are copied when we copy a reference to a function
  object.  Fixes #4325
- Fully qualified function calls to avoid ambiguity with new additions to
  standard. Thanks to Conrad Poelman. Fixes #4073
- Remove iterator workaround for newer versions of Visual Age C++. Thanks to
  'ccambly'. Fixes #3912
- Fix unused variable warning for Visual C++. Fixes #3618
- Testing flag for Visual C++.
- Removed all but one old-style cast, prevents GCC warnings, but breaks GCC
  2.95.3. Fixes #3410
- Fixed tab and newline issues from inspection report.



[SVN r70361]
2011-03-21 21:32:38 +00:00
f85a3db133 Spirit: merging from trunk upto rev. 61489
[SVN r63640]
2010-07-04 22:38:38 +00:00
a0286a58c7 Merge documentation fixes.
* Use `doc/src/*.css` instead of `doc/html/*.css`.
* Remove wiki and people directories.
* Some documentation fixes.
* Left out `minimal.css` changes and boostbook changes because of clashes.


[SVN r63347]
2010-06-26 12:30:09 +00:00
1b6a5673cb Merge [58123], [58127], [58128] to release. Fixes #3666.
[SVN r58195]
2009-12-06 17:50:28 +00:00
24a7ce00a8 rm cmake from the release branch before it goes out broken. Policy dictates that you never commit to release, you commit to trunk and merge to release.
[SVN r56941]
2009-10-17 01:10:45 +00:00
c398dfceb3 Add basic copyright/license to keep cmake out of the inspection report
[SVN r55095]
2009-07-22 21:51:01 +00:00
a108a1cf26 Fix a typo.
Merged revisions 54909 via svnmerge from 
https://svn.boost.org/svn/boost/trunk

[SVN r54912]
2009-07-12 16:13:35 +00:00
d68cc8a51c Merge various function changes from trunk.
Merged revisions 49571,50064,51743,51745,53722,54616-54619 via svnmerge from 
https://svn.boost.org/svn/boost/trunk

........
  r49571 | noel_belcourt | 2008-11-03 18:37:49 +0000 (Mon, 03 Nov 2008) | 9 lines
  
  Both Sun and Pgi on Linux correctly put typeinfo into the std
  namespace, but function_base keys off the
  BOOST_NO_EXCEPTION_STD_NAMESPACE macro instead of the
  BOOST_NO_STD_TYPEINFO macro.  The attached patch changes
  function_base to use the typeinfo macro.  Because eVC 4.2 doesn't
  put typeinfo into the std namespace, I need to define
  BOOST_NO_STD_TYPEINFO only for this eVC version.
........
  r50064 | johnmaddock | 2008-12-02 10:10:46 +0000 (Tue, 02 Dec 2008) | 1 line
  
  Fix -Wundef warning and suspect usage of BOOST_STRICT_CONFIG.
........
  r51743 | dgregor | 2009-03-13 05:23:53 +0000 (Fri, 13 Mar 2009) | 11 lines
  
  Implement an optimization that David Abrahams and myself came up with,
  where Boost.Function uses a bit in the vtable pointer to indicate when
  the target function object has a trivial copy constructor, trivial
  destructor, and fits within the small object buffer. In this case, we
  just copy the bits of the function object rather than performing an
  indirect call to the manager.
  
  This results in a 60% speedup on a micro-benchmark that copies and
  calls such function objects repeatedly.
........
  r51745 | dgregor | 2009-03-13 05:49:02 +0000 (Fri, 13 Mar 2009) | 7 lines
  
  Make Boost.Function compile under BOOST_NO_EXCEPTIONS.
  
  Fixes #2499
  Fixes #2494
  Fixes #2469
  Fixes #2466
........
  r53722 | vladimir_prus | 2009-06-07 16:44:50 +0100 (Sun, 07 Jun 2009) | 4 lines
  
  Make Boost.Function compile with disabled exceptions.
  
  Closes #2900. Patch from Gabi Davar.
........
  r54616 | danieljames | 2009-07-03 23:20:26 +0100 (Fri, 03 Jul 2009) | 3 lines
  
  When copying boost::ref, copy even when the referenced function is empty. Fixes #2642
  
  Patch by Steven Watanabe
........
  r54617 | danieljames | 2009-07-03 23:20:52 +0100 (Fri, 03 Jul 2009) | 6 lines
  
  Add 'and later versions' to support info for GCC and Visual C++. Fixes #2847.
  
  I didn't explicitly specify the versions since no one's updating this
  list and it's highly unlikely that a future version will break this. The
  same could probably be done for the other compilers but I don't know
  them very well so I'm leaving them alone.
........
  r54618 | danieljames | 2009-07-03 23:21:40 +0100 (Fri, 03 Jul 2009) | 4 lines
  
  Fix Boost.Function unit tests for C++0x. Fixes #3012
  
  Based on a patch from Richard Webb. Changed a bit so that it also
  works for the Visual C++ 10 beta.
........
  r54619 | danieljames | 2009-07-03 23:22:03 +0100 (Fri, 03 Jul 2009) | 3 lines
  
  Work around Visual C++ copy constructor bug. Fixes #2929.
  
  Based on the patch by Steven Watanabe.
........


[SVN r54824]
2009-07-08 23:23:52 +00:00
cca7b35712 Add missing #pragma warning(pop) in Boost.Function.
Merged revisions 53694 via svnmerge from 
https://svn.boost.org/svn/boost/trunk

........
  r53694 | danieljames | 2009-06-06 16:31:47 +0100 (Sat, 06 Jun 2009) | 1 line
  
  Add missing #pragma warning(pop). Fixes #2767.
........


[SVN r54410]
2009-06-27 10:46:20 +00:00
9bb12ce87a Fixed almost all tab and min/max issues found by inspect tool
[SVN r53142]
2009-05-20 19:41:20 +00:00
467ae9613f Merge PDF build changes from Trunk.
[SVN r51417]
2009-02-23 18:39:32 +00:00
2fd383cd2e merge of cmake build files from trunk per beman
[SVN r50756]
2009-01-24 18:57:20 +00:00
587658b047 Merge Boost.Function fixes from trunk
[SVN r49361]
2008-10-16 13:21:50 +00:00
83309a36c7 Merge Boost.Function from the trunk
[SVN r47422]
2008-07-14 18:32:29 +00:00
bfdb5b161d Merged fixes for Function, Signals, and MPI from trunk. See #1499, see #1416, see #1486
[SVN r42031]
2007-12-14 14:48:14 +00:00
c4539395fe Full merge from trunk at revision 41356 of entire boost-root tree.
[SVN r41369]
2007-11-25 18:07:19 +00:00
6147e7ddcc Starting point for releases
[SVN r39706]
2007-10-05 14:25:06 +00:00
1b60e82b2f This commit was manufactured by cvs2svn to create tag
'Version_1_34_1'.

[SVN r38286]
2007-07-24 19:28:14 +00:00
7581949360 Patches from Trac #583.
[SVN r37846]
2007-06-01 16:12:08 +00:00
0b2aeda226 Merged copyright and license addition
[SVN r35907]
2006-11-07 19:27:00 +00:00
2ecd62c612 Remove obsolete Boost.Build v1 files.
[SVN r35880]
2006-11-06 17:10:46 +00:00
47033bd162 Fix inspection problems
[SVN r35827]
2006-11-03 19:41:10 +00:00
c7d5016022 Eliminate MSVC 8.0 warning
[SVN r35588]
2006-10-13 14:29:56 +00:00
d92355cca2 Suppress annoying MSVC warnings
[SVN r35424]
2006-09-29 17:23:28 +00:00
0123f84bff Suppress annoying MSVC warnings
[SVN r35423]
2006-09-29 17:23:17 +00:00
0207da8008 This commit was manufactured by cvs2svn to create branch 'RC_1_34_0'.
[SVN r33417]
2006-03-21 02:26:31 +00:00
5 changed files with 33 additions and 24 deletions

View File

@ -56,7 +56,7 @@
// need to use std::type_info::name to compare instead of operator==.
#if defined( BOOST_NO_TYPEID )
# define BOOST_FUNCTION_COMPARE_TYPE_ID(X,Y) ((X)==(Y))
#elif (defined(__GNUC__) && __GNUC__ >= 3) \
#elif defined(__GNUC__) \
|| defined(_AIX) \
|| ( defined(__sgi) && defined(__host_mips))
# include <cstring>
@ -66,11 +66,11 @@
# define BOOST_FUNCTION_COMPARE_TYPE_ID(X,Y) ((X)==(Y))
#endif
#if defined(BOOST_MSVC) && BOOST_MSVC <= 1300 || defined(__ICL) && __ICL <= 600 || defined(__MWERKS__) && __MWERKS__ < 0x2406 && !defined(BOOST_STRICT_CONFIG)
#if defined(__ICL) && __ICL <= 600 || defined(__MWERKS__) && __MWERKS__ < 0x2406 && !defined(BOOST_STRICT_CONFIG)
# define BOOST_FUNCTION_TARGET_FIX(x) x
#else
# define BOOST_FUNCTION_TARGET_FIX(x)
#endif // not MSVC
#endif // __ICL etc
#if !BOOST_WORKAROUND(__BORLANDC__, < 0x5A0)
# define BOOST_FUNCTION_ENABLE_IF_NOT_INTEGRAL(Functor,Type) \
@ -661,11 +661,7 @@ public:
}
template<typename Functor>
#if defined(BOOST_MSVC) && BOOST_WORKAROUND(BOOST_MSVC, < 1300)
const Functor* target( Functor * = 0 ) const
#else
const Functor* target() const
#endif
{
if (!vtable) return 0;
@ -683,11 +679,7 @@ public:
template<typename F>
bool contains(const F& f) const
{
#if defined(BOOST_MSVC) && BOOST_WORKAROUND(BOOST_MSVC, < 1300)
if (const F* fp = this->target( (F*)0 ))
#else
if (const F* fp = this->template target<F>())
#endif
{
return function_equal(*fp, f);
} else {

View File

@ -19,8 +19,7 @@ namespace boost { namespace python { namespace objects {
}}}
#endif
#if defined (BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
|| defined(BOOST_BCB_PARTIAL_SPECIALIZATION_BUG) \
#if defined(BOOST_BCB_PARTIAL_SPECIALIZATION_BUG) \
|| !(defined(BOOST_STRICT_CONFIG) || !defined(__SUNPRO_CC) || __SUNPRO_CC > 0x540)
# define BOOST_FUNCTION_NO_FUNCTION_TYPE_SYNTAX
#endif

View File

@ -935,10 +935,11 @@ namespace boost {
if (stored_vtable.assign_to(f, functor)) {
std::size_t value = reinterpret_cast<std::size_t>(&stored_vtable.base);
// coverity[pointless_expression]: suppress coverity warnings on apparant if(const).
if (boost::has_trivial_copy_constructor<Functor>::value &&
boost::has_trivial_destructor<Functor>::value &&
detail::function::function_allows_small_object_optimization<Functor>::value)
value |= static_cast<size_t>(0x01);
value |= static_cast<std::size_t>(0x01);
vtable = reinterpret_cast<detail::function::vtable_base *>(value);
} else
vtable = 0;
@ -969,6 +970,7 @@ namespace boost {
if (stored_vtable.assign_to_a(f, functor, a)) {
std::size_t value = reinterpret_cast<std::size_t>(&stored_vtable.base);
// coverity[pointless_expression]: suppress coverity warnings on apparant if(const).
if (boost::has_trivial_copy_constructor<Functor>::value &&
boost::has_trivial_destructor<Functor>::value &&
detail::function::function_allows_small_object_optimization<Functor>::value)

View File

@ -14,24 +14,32 @@
#include <iostream>
#include <functional>
struct Y {
Y(int y = 0) : y_(y) {}
bool operator==(const Y& rhs) { return y_ == rhs.y_; }
private:
int y_;
};
struct X {
int foo(int);
std::ostream& foo2(std::ostream&) const;
Y& foo2(Y&) const;
};
int X::foo(int x) { return -x; }
std::ostream& X::foo2(std::ostream& x) const { return x; }
Y& X::foo2(Y& x) const { return x; }
int main()
{
boost::function<int (X*, int)> f;
boost::function<std::ostream& (X*, std::ostream&)> f2;
boost::function<Y& (X*, Y&)> f2;
Y y1;
f = &X::foo;
f2 = &X::foo2;
X x;
BOOST_TEST(f(&x, 5) == -5);
BOOST_TEST(f2(&x, boost::ref(std::cout)) == std::cout);
BOOST_TEST(f2(&x, boost::ref(y1)) == y1);
return ::boost::report_errors();
}

View File

@ -14,24 +14,32 @@
#include <iostream>
#include <functional>
struct Y {
Y(int y = 0) : y_(y) {}
bool operator==(const Y& rhs) { return y_ == rhs.y_; }
private:
int y_;
};
struct X {
int foo(int);
std::ostream& foo2(std::ostream&) const;
Y& foo2(Y&) const;
};
int X::foo(int x) { return -x; }
std::ostream& X::foo2(std::ostream& x) const { return x; }
Y& X::foo2(Y& x) const { return x; }
int main()
{
boost::function2<int, X*, int> f;
boost::function2<std::ostream&, X*, std::ostream&> f2;
boost::function2<Y&, X*, Y&> f2;
Y y1;
f = &X::foo;
f2 = &X::foo2;
X x;
BOOST_TEST(f(&x, 5) == -5);
BOOST_TEST(f2(&x, boost::ref(std::cout)) == std::cout);
BOOST_TEST(f2(&x, boost::ref(y1)) == y1);
return ::boost::report_errors();
}