Commit Graph

234 Commits

Author SHA1 Message Date
Dave Abrahams
9cf5e8efbe Workaround Sun and HP bugs
[SVN r16511]
2002-12-04 15:54:33 +00:00
Douglas Gregor
17427dfa3b Borland C++ 5.6.0 doesn't handle enable_if
[SVN r16262]
2002-11-15 19:26:39 +00:00
Douglas Gregor
7dcd9cd224 Metrowerks 7.2 can't handle enable_if
[SVN r16226]
2002-11-13 21:00:23 +00:00
Douglas Gregor
f54bd9f08d function_template.hpp:
- Wrap ICEs in parentheses when used as template arguments


[SVN r16225]
2002-11-13 18:03:55 +00:00
Douglas Gregor
7baa23912d Fix on BCC 5.6.1 (Hugo Duncan)
[SVN r16216]
2002-11-12 22:36:29 +00:00
Douglas Gregor
79fca4d1b2 MSVC 7.0 broken. Go figure
[SVN r16179]
2002-11-09 21:05:46 +00:00
Douglas Gregor
18d09833f7 Neither MSVC nor Borland can handle enable_if. Big surprise.
[SVN r16177]
2002-11-09 17:16:24 +00:00
Douglas Gregor
5574a6e97d MIPSpro 7.3.1.3m can't support enable_if
[SVN r16175]
2002-11-09 16:26:47 +00:00
Douglas Gregor
17b311cbbd Support assignment from 0, construction from 0, and comparison to zero.
[SVN r16174]
2002-11-09 16:02:47 +00:00
Douglas Gregor
17ded4b8bf - Added sig member template support for Boost.Lambda, with testcase (Michael Hohmuth)
- Removed the assignment-to-zero attempt

- Added bad_function_call exception (using boost::throw_exception)


[SVN r16102]
2002-11-04 18:19:01 +00:00
Douglas Gregor
374711d2c6 function_template.hpp:
- function partial specialization now allows assignment to zero
    (for clearing) and comparison against zero (for the empty check)
    (Brad King)

function_test.cpp:
  - Check comparison against zero
  - Check assignment to zero

function_test_fail1.cpp:
function_test_fail2.cpp:
  - Make them fail for the right reasons


[SVN r15803]
2002-10-08 02:32:38 +00:00
Ralf W. Grosse-Kunstleve
300fde19a1 namespace name in the MIPSpro workaround corrected
[SVN r15516]
2002-09-25 20:02:31 +00:00
Douglas Gregor
8f578dbc78 function_template.hpp:
- Don't let Borland C++ use class template function

function_base.hpp:
  - Work around freaky MIPSpro bug that affects the Python lib


[SVN r15514]
2002-09-25 18:10:32 +00:00
Douglas Gregor
e3386d8e7e Fixes for MSVC 6.0sp5
[SVN r15502]
2002-09-25 03:30:18 +00:00
Douglas Gregor
68d6a1354e function_template.hpp:
- Remove tabs

prologue.hpp:
  - get BOOST_PP_INC


[SVN r15501]
2002-09-24 19:52:56 +00:00
Douglas Gregor
6c8e07793d function_base.hpp:
- make make_any_pointer inline


[SVN r15500]
2002-09-24 19:27:51 +00:00
Douglas Gregor
8b6f154891 function_base.hpp:
- Don't try to implicitly convert a function pointer to a data pointer

stateless_test.cpp:
  - Don't use the deprecated syntax


[SVN r15499]
2002-09-24 17:28:58 +00:00
Douglas Gregor
f9ae459b2d - Removed everything deprecated in 1.29.0
- Deprecate user use of function_base
- Use the Boost Preprocessor library to make Function scalable to any
  (reasonable) number of arguments
- Make any_pointer a POD (oops)
- Test Boost.Function for 30 arguments
- Remove tests of deprecated features


[SVN r15498]
2002-09-24 17:16:17 +00:00
Douglas Gregor
f36e83fb27 function_base.hpp:
- Remove safe_bool conversion and operator! from class function_base

function_template.hpp:
  - Add safe_bool conversion and operator!
  - operator! returns bool, not safe_bool (Peter Dimov)

reference.html:
  - Document above change


[SVN r15356]
2002-09-16 03:44:18 +00:00
Douglas Gregor
e16a46fbe8 Added argI_type typedefs
Added arity ICE


[SVN r15184]
2002-09-06 18:47:59 +00:00
Douglas Gregor
893069311a function_base.hpp:
- Use the BOOST_FUNCTION_SILENT_DEPRECATED macro as a signal to turn off all
    "deprecated" warnings


[SVN r14756]
2002-08-09 14:34:23 +00:00
Douglas Gregor
0db4ad9f55 Attempted Borland fix
[SVN r14709]
2002-08-06 14:20:08 +00:00
Douglas Gregor
021063eddf Attempted fix for Compaq CXX 6.2
[SVN r14693]
2002-08-05 13:32:25 +00:00
Douglas Gregor
688df3d137 function_base.hpp:
- Use <boost/pending/ct_if.hpp>

all:
  - Add BOOST_FUNCTION_NO_DEPRECATED macro hackery to get rid of ALL deprecated
    features


[SVN r14685]
2002-08-05 06:19:17 +00:00
Douglas Gregor
694ebbb301 Use built-in deprecation facilities, when available
[SVN r14677]
2002-08-05 03:08:08 +00:00
Douglas Gregor
837591456f Remove the unused is_not_same
[SVN r14676]
2002-08-05 02:34:02 +00:00
Douglas Gregor
2d8a4b136a Use function_traits in type_traits library
[SVN r14675]
2002-08-05 02:33:26 +00:00
Douglas Gregor
4f5147f96e function.hpp:
- When determining if a type is a function type, don't blindly add a pointer
    but instead use add_pointer


[SVN r14586]
2002-07-24 13:27:49 +00:00
Douglas Gregor
9db8577d16 Removed all of the deprecated parameters and made them variables
[SVN r14578]
2002-07-23 21:57:57 +00:00
Dave Abrahams
d62193624e VC6/7 workaround
[SVN r14552]
2002-07-21 11:09:23 +00:00
Douglas Gregor
3264064074 Removed some cruft
Deprecated the 'set' methods


[SVN r14538]
2002-07-19 20:09:29 +00:00
Douglas Gregor
a0bd17560f Don't fail on compilers without partial specialization (but don't allow the new syntax either)
[SVN r14535]
2002-07-19 19:41:53 +00:00
Douglas Gregor
fca8413df6 Support for Borland C++ 5.5.1
[SVN r14533]
2002-07-19 19:16:33 +00:00
Douglas Gregor
9e49833a8c function.hpp:
- Support Peter Dimov's rockin' new syntax:
      function<string (int x, double y, float z)> f;


[SVN r14531]
2002-07-19 18:30:48 +00:00
Douglas Gregor
df34714340 Removed 'truth' template, which isn't needed
[SVN r14060]
2002-05-29 17:27:59 +00:00
Douglas Gregor
d50e9729ea Fixed conflicts in 1.28.0 merge
[SVN r13946]
2002-05-16 02:18:29 +00:00
Douglas Gregor
a3e9eb5db2 Removed tabs
[SVN r13812]
2002-05-10 17:54:40 +00:00
Douglas Gregor
57ee7e962a function.hpp:
- Remove default parameters in real_get_function_impl (Fixed Borland C++
    Builder 6)


[SVN r13595]
2002-04-30 20:05:32 +00:00
Douglas Gregor
48943fec83 Removed some unused macros
[SVN r13594]
2002-04-30 19:41:37 +00:00
Douglas Gregor
a0b89d0a30 function_base.hpp:
- Workaround for Sun CC


[SVN r13566]
2002-04-26 17:45:53 +00:00
Douglas Gregor
82226cb9d6 Changed IF to ct_if because IF is sometimes used as a macro (ewww)
[SVN r13420]
2002-04-10 04:10:06 +00:00
Douglas Gregor
28984e4f23 function_base.hpp:
- has_empty_target modified to deal only with function objects, and to not
    require pointers to the function objects.

function_template.hpp:
  - Don't use '&' operation on incoming function objects


[SVN r13318]
2002-03-30 18:45:28 +00:00
Douglas Gregor
1774c0646d function_template.hpp:
- Handle compilers without void returns in a sensible manner


[SVN r12615]
2002-02-01 02:51:48 +00:00
Douglas Gregor
4b430a5414 function_template.hpp:
- Make functionN<void, ...> really have a void return value


[SVN r12613]
2002-01-31 22:56:16 +00:00
Douglas Gregor
7b0f465f33 Reverting member function pointer optimization
[SVN r12580]
2002-01-30 15:04:08 +00:00
Douglas Gregor
6882358627 function_base.hpp:
function_template.hpp:
  - Add support for storing member function pointers directly within the
    Boost.Function object, without allocating any extra memory


[SVN r12568]
2002-01-30 04:33:45 +00:00
Douglas Gregor
812ef599bd function_template.hpp:
- Fix unused parameter warning


[SVN r12565]
2002-01-30 03:39:44 +00:00
Douglas Gregor
8c198b1c90 function_template.hpp:
- Ensure initialization of stateless function objects


[SVN r12561]
2002-01-30 03:18:15 +00:00
Douglas Gregor
11187bcf3a function_base.hpp:
- Switch over to using is_reference_wrapper instead of homegrown is_ref
  - Identify stateless function objects

function_template.hpp:
  - Optimize away construction/allocator for stateless function objects.


[SVN r12559]
2002-01-30 01:59:49 +00:00
Douglas Gregor
4f33ea7665 function_base.hpp:
- Fixed for Intel on Windows _and_ MSVC 7.0


[SVN r12472]
2002-01-24 04:06:05 +00:00
Douglas Gregor
51c376c4ee function_base.hpp:
- Fixed for Intel C++, I hope?


[SVN r12469]
2002-01-23 21:17:40 +00:00
Douglas Gregor
58656b40b1 Try to fix for MSVC 7.0
[SVN r12456]
2002-01-23 14:01:28 +00:00
Dave Abrahams
2fa9ee040b Fixes for Intel, added version cutoff for obsolete MWERKS workaround
[SVN r12434]
2002-01-22 13:11:05 +00:00
Douglas Gregor
96f7184528 Untabified
[SVN r12335]
2002-01-17 15:57:13 +00:00
Douglas Gregor
647693dfc9 function_base.hpp:
- Make manager and functor members of function_base public instead of
    protected, because attempt to make HP aCC compile Boost.Function

function_template.hpp:
  - HP aCC seems to believe that the functor and manager members inherited from
    function_base are inaccessible. So qualify them with the function_base
    base class.


[SVN r12298]
2002-01-13 16:12:26 +00:00
Douglas Gregor
d3daf6db42 Renamed BOOST_MSVC_ONLY to BOOST_FUNCTION_TARGET_FIX
Metrowerks needs the BOOST_FUNCTION_TARGET_FIX workaround


[SVN r12144]
2001-12-24 17:10:47 +00:00
Douglas Gregor
ce68cb8999 function_template.hpp:
- Use a C-style cast to deal with constness easily


[SVN r12060]
2001-12-15 00:43:56 +00:00
John Maddock
47599fb625 Added inline modifier to trivial_manager -
without this, some compilers (VC6) generate linker errors,
   in any case it is an ODR violation to define this function
   in every translation unit.


[SVN r11984]
2001-12-09 12:49:09 +00:00
Douglas Gregor
083767f67a Taking function objects by value instead of as references-to-const. This does not work on MSVC6.5, so the BOOST_MSVC_ONLY macro was added to make them references-to-const for only that compiler.
- Borland C++ no longer requires hacks to make function pointers work
- On any compiler other than MSVC, free functions can be assigned to Boost.Function objects without the explicit '&'


[SVN r11943]
2001-12-05 22:35:32 +00:00
Douglas Gregor
8cbd121969 function_base.hpp:
- Add trivial_manager that does nothing but copy object pointers
  - Add is_ref to determine if a type is a reference_wrapper
  - Add function_obj_ref_tag for reference_wrappers
  - Teach get_function_tag about reference_wrappers

function_template.hpp:
  - Add assign_to overload for reference_wrappers (these don't throw)


[SVN r11875]
2001-12-03 16:28:33 +00:00
Douglas Gregor
2265421357 General cleanups
[SVN r11791]
2001-11-27 23:11:44 +00:00
Douglas Gregor
c64a2f3492 function_template.hpp:
- Changed reinterpret_casts between pointers to member functions
    to C-style casts for MIPSpro.


[SVN r11767]
2001-11-22 00:34:29 +00:00
Douglas Gregor
cc3a33a19c function_template.hpp:
- Use boost::mem_fn internally to deal with calls to unbound
    member functions.


[SVN r11731]
2001-11-19 20:56:52 +00:00
Douglas Gregor
a4c09a92d1 Generates the functionN.hpp headers
[SVN r11730]
2001-11-19 20:32:07 +00:00
Douglas Gregor
b8e4cdab2f function_base.hpp:
- Updated any_pointer and manager classes to deal with member function
    pointers directly, so no allocation is required when using them.
  - Removed include of boost/mem_fn.hpp

function_template.hpp:
  - Many macros that were in the functionN.hpp headers have been moved here and
    are now generated on-the-fly using BOOST_JOIN
  - Added invokers for pointers to member functions
  - Revised pointer to member function handling code to not perform any
    allocations/deallocations
  - Added guards so that multiple inclusion of function_template.hpp will only
    include its dependencies once.

functionN.hpp:
  - Headers regenerated


[SVN r11729]
2001-11-19 20:30:18 +00:00
Douglas Gregor
3f13d39604 function_base.hpp:
function_template.hpp:
  - Removed implementation based on virtual functions. Such an implementation
    can't meet exception safety requirements made by the manager/invoker
    version.


[SVN r11726]
2001-11-19 14:52:04 +00:00
Douglas Gregor
3c5579ccbc Removed function_cast() and .target_type()
[SVN r11443]
2001-10-25 20:56:14 +00:00
Douglas Gregor
08d727df21 Added ability to handle member function pointers natively, e.g.,
boost::function<int, X*, int> f(&X::foo);


[SVN r11393]
2001-10-16 19:23:37 +00:00
Douglas Gregor
e00d8f0afb Fixes for MSVC
[SVN r11363]
2001-10-08 13:49:02 +00:00
Douglas Gregor
1d4282c706 Added support for target_type() member function (returns an std::type_info of
the underlying function object) and casting to retrieve the underyling target.


[SVN r11360]
2001-10-08 13:32:24 +00:00
Douglas Gregor
62d3c6d426 Fix for BOOST_NO_STD_ALLOCATOR when std::allocator doesn't even exist
[SVN r11349]
2001-10-06 20:28:27 +00:00
Douglas Gregor
b240e7efca Split default and mixin constructor into separate constructors (instead of using default value) because of MSVC 7.0b2 (Peter Dimov)
[SVN r11139]
2001-09-18 14:48:51 +00:00
Douglas Gregor
657a63fce4 function_template.hpp:
- const function calling semantics changed. Now 'function' has
	  pointer/reference semantics (constness of 'function' object does not
	  affect constness of targetted function object)


[SVN r10685]
2001-07-22 05:26:17 +00:00
Douglas Gregor
3ba640809b function.hpp:
- Use "self_type" instead of "function" for constructing swapping temporary (Borland C++ needs it)

function_base.hpp:
  - Give empty copy constructor, default constructor, and assignment operator to empty_function_mixin (MSVC generates incorrect ones)

function_template.hpp:
  - Make Borland C++ and MSVC agree on the code (involves an extra constructor definition and careful use of self_type vs. BOOST_FUNCTION_FUNCTION)


[SVN r10619]
2001-07-14 19:34:14 +00:00
Douglas Gregor
aad9b5f5e0 function_template.cpp:
- Correctly copy mixin when assigning from any function/function object


[SVN r10617]
2001-07-14 18:51:00 +00:00
Douglas Gregor
5754d88110 function.hpp:
- Use swap() for exception safe assignment operators

function_template.hpp:
	- Use swap() for exception safe assignment operators
	- Remove BOOST_FUNCTION_BASE class.
	- Support copying of mixins. (Richard Crossley)


[SVN r10614]
2001-07-14 18:41:19 +00:00
Douglas Gregor
93ad5963c9 function_base.hpp:
- Changed "RET" to "type" in the IF template metafunction because
	  the GCC source headers define RET as a macro.


[SVN r10509]
2001-07-02 15:25:04 +00:00
Douglas Gregor
48948088fd function_template.hpp:
- One argument functions model AdaptableUnaryFunction
	- Two argument functions model AdaptableBinaryFunction


[SVN r10502]
2001-07-01 19:17:38 +00:00
Douglas Gregor
1f24873577 The void partial specialization of the function classes has been removed in
favor of a common interface. Regardless of the compiler's capabilities, the
result type of a Boost.Function function object that was declared void will
be "unused". This allows the result of a Boost.Function function object to
be passed as a parameter regardless of whether the function is declared as
returning void. It greatly simplifies the use of Boost.Function objects with
wrapper objects (i.e., when the side effects are important, but the result
isn't: consider binding and composition when calling a std::for_each loop)


[SVN r10491]
2001-07-01 02:17:36 +00:00
Douglas Gregor
53f9f4484f Removed consts and associated const_casts from Borland workaround code.
[SVN r10486]
2001-06-29 20:34:32 +00:00
Douglas Gregor
73f380d5ac Boost.Function:
- Redesigned decision procedure for "is it a function pointer" vs.
	  "is it an object".
	- No longer requires copy constructions of function objects during
	  assignment or construction.
	- Added operator! to boost::function_base instead of relying on
	  safe_bool conversion.
	- BOOST_NO_DEPENDENT_BASE_LOOKUP is now unnecessary
	- BOOST_WEAK_CONVERSION_OPERATORS is now unnecessary
	- BOOST_WEAK_FUNCTION_TEMPLATE_ORDERING is now unnecessary


[SVN r10481]
2001-06-29 19:33:29 +00:00
Douglas Gregor
07c66d01fa function.hpp:
- Added self-assignment check in operator= and set()

function_template.hpp:
	- Added self-assignment check in operator= and set()


[SVN r10431]
2001-06-26 13:38:58 +00:00
Douglas Gregor
42aedefe2f * Added initial comments and copyright notices to any files missing them.
* "Acknowledgements" section added to documentation


[SVN r10396]
2001-06-22 14:13:03 +00:00
Beman Dawes
62db26b94d Initial comit
[SVN r10368]
2001-06-21 16:19:33 +00:00