2002-01-30 01:58:28 +00:00
|
|
|
// Boost.Function library
|
|
|
|
|
|
|
|
// Copyright (C) 2001 Doug Gregor (gregod@cs.rpi.edu)
|
|
|
|
//
|
|
|
|
// 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.
|
|
|
|
|
|
|
|
// For more information, see http://www.boost.org
|
|
|
|
|
|
|
|
#define BOOST_INCLUDE_MAIN
|
|
|
|
#include <boost/test/test_tools.hpp>
|
|
|
|
#include <boost/function.hpp>
|
|
|
|
#include <stdexcept>
|
|
|
|
|
|
|
|
struct stateless_integer_add {
|
|
|
|
int operator()(int x, int y) const { return x+y; }
|
|
|
|
|
2003-01-19 14:44:34 +00:00
|
|
|
void* operator new(std::size_t, stateless_integer_add*) throw()
|
2002-01-30 01:58:28 +00:00
|
|
|
{
|
|
|
|
throw std::runtime_error("Cannot allocate a stateless_integer_add");
|
2002-12-04 16:19:39 +00:00
|
|
|
return 0; // suppress warnings
|
2002-01-30 01:58:28 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
void operator delete(void*, stateless_integer_add*)
|
|
|
|
{
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
namespace boost {
|
|
|
|
template<>
|
|
|
|
struct is_stateless<stateless_integer_add> {
|
|
|
|
BOOST_STATIC_CONSTANT(bool, value = true);
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
int test_main(int, char*[])
|
|
|
|
{
|
2002-09-24 17:28:58 +00:00
|
|
|
boost::function2<int, int, int> f;
|
2002-01-30 01:58:28 +00:00
|
|
|
f = stateless_integer_add();
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
}
|