|
Boost Users : |
From: Alexis H. Rivera-Rios (ahrivera_at_[hidden])
Date: 2008-02-05 00:05:04
Hi,
I'm trying to use a transform iterator and lower_bound
to search a list of integers as if it was list of
booleans.
According to the message the const_mem_fun_ref_t
doesn't have a default constructor. Is there a way to
make this code compile?
Your help will be appreciated!
Alex
#include<functional>
#include <vector>
#include <algorithm>
#include <boost/iterator/transform_iterator.hpp>
class T
{
public:
int _a;
T(int a) : _a(a) {}
bool greaterZero() const { return _a > 0; }
};
int main(void)
{
typedef std::vector<T> Tlist;
typedef std::const_mem_fun_ref_t<bool,T> Function;
typedef boost::transform_iterator<Function,
Tlist::const_iterator> Iterator;
Tlist x;
Iterator
b(x.begin(),std::mem_fun_ref<bool,T>(&T::greaterZero)),
e(x.end(),std::mem_fun_ref<bool,T>(&T::greaterZero));
std::lower_bound(b,e,false);
}
Error log:
BD Software STL Message Decryptor v3.10 for gcc 2/3/4
matob.cpp:28:2: warning: no newline at end of file
/cygdrive/c/opt/boost_1_34_1/boost/iterator/transform_iterator.hpp:
In
constructor
`boost::transform_iterator<
main()::Function, vector<T>::const_iterator,
boost::use_default
, boost::use_default
>::transform_iterator()':
stl_algo.h:2627: instantiated from
`boost::transform_iterator<
main()::Function, vector<T>::const_iterator,
boost::use_default
, boost::use_default
> lower_bound(
boost::transform_iterator<
main()::Function,
vector<T>::const_iterator, boost::use_default
, boost::use_default
>, boost::transform_iterator<
main()::Function,
vector<T>::const_iterator, boost::use_default
, boost::use_default
>, const bool &
)'
matob.cpp:26: instantiated from here
/cygdrive/c/opt/boost_1_34_1/boost/iterator/transform_iterator.hpp:100:
error:
No match for `const_mem_fun_ref_t<bool,
T>::const_mem_fun_ref_t()'
stl_function.h:640: candidates are:
const_mem_fun_ref_t<bool, T>
::const_mem_fun_ref_t(const
const_mem_fun_ref_t<bool, T> &)
stl_function.h:644: const_mem_fun_ref_t<
bool, T>::const_mem_fun_ref_t(bool (T::*)()
const)
Programming Tutorial:
In Python: To do this, do this
In Perl: To do this, do this or this or this or this...
In C: To do this, do this, but be careful
In C++: To do this, do this, but don't do this, be careful of this, watch out for this, and whatever you do, don't do this
____________________________________________________________________________________
Never miss a thing. Make Yahoo your home page.
http://www.yahoo.com/r/hs
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