|
Boost Users : |
Subject: [Boost-users] Compile error using boost's tr1::bind
From: Tron Thomas (tron.thomas_at_[hidden])
Date: 2009-06-03 18:38:57
This code:
#include <iostream>
#include <algorithm>
#include <boost/tr1/functional.hpp>
using std::ostream;
class Value
{
public:
Value() : m_amount(0) {}
void IncreaseBy(int amount) { m_amount += amount; }
void WriteTo(ostream& stream) const { stream << m_amount; }
private:
int m_amount;
};
ostream& operator <<(ostream& stream, const Value& value)
{
value.WriteTo(stream);
return stream;
}
int main()
{
Value sum;
int values[] = { 1, 2, 3, 4, 5 };
std::for_each(values, values + 5, std::tr1::bind(&Value::IncreaseBy, sum));
std::cout << "The value is " << sum << std::endl;
return 0;
}
Produces compile error output like the following when compiled on Fedora
10 (Intel):
In file included from /usr/include/boost/tr1/functional.hpp:8,
from ValueSum.cpp:3:
/usr/include/boost/tr1/detail/config.hpp:60:26: error: no include path
in which to search for utility
/usr/include/boost/mem_fn.hpp: In member function R& boost::_mfi::dm<R,
T>::operator()(T&) const [with R = void ()(int), T = Value]:
/usr/include/boost/bind.hpp:221: instantiated from R
boost::_bi::list1<A1>::operator()(boost::_bi::type<R>, F&, A&, long int)
[with R = void (&)(int), F = boost::_mfi::dm<void ()(int), Value>, A =
boost::_bi::list1<int&>, A1 = boost::_bi::value<Value>]
/usr/include/boost/bind/bind_template.hpp:32: instantiated from
typename boost::_bi::result_traits<R, F>::type boost::_bi::bind_t<R, F,
L>::operator()(A1&) [with A1 = int, R = void (&)(int), F =
boost::_mfi::dm<void ()(int), Value>, L =
boost::_bi::list1<boost::_bi::value<Value> >]
/usr/lib/gcc/i386-redhat-linux/4.3.2/../../../../include/c++/4.3.2/bits/stl_algo.h:3791:
instantiated from _Funct std::for_each(_IIter, _IIter, _Funct) [with
_IIter = int*, _Funct = boost::_bi::bind_t<void (&)(int),
boost::_mfi::dm<void ()(int), Value>,
boost::_bi::list1<boost::_bi::value<Value> > >]
ValueSum.cpp:31: instantiated from here
/usr/include/boost/mem_fn.hpp:359: error: invalid use of non-static
member function
What is needed for the code to compile and run properly?
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net