Я изо всех сил пытаюсь выяснить, почему я не могу заставить преобразование работать с шаблоном класса.
Вот упрощенная версия шаблона класса:
template<typename T>
class base
{
public :
base() : all_() {}
~base() {}
public:
bool add(T t)
{
typename vector<T>::iterator itr
= lower_bound(all_.begin(), all_.end(), t);
if ( itr == all_.end() || *itr != t )
{
all_.push_back(t);
cout << "ok" << endl;
return true;
}
cout << "failed" << endl;
return false;
}
static bool addTo(base<T> *c, T t)
{
return c->add(t);
}
private :
vector<T> all_;
};
И здесь я пытаюсь использовать transform для захвата всего вывода bool из функции add member:
main()
{
base<int> test;
vector<bool> results;
vector<int> toAdd;
toAdd.push_back(10);
toAdd.push_back(11);
toAdd.push_back(10);
transform( toAdd.begin(), toAdd.end(),
back_inserter(results),
bind1st( (bool(*)(base<int>*,int))base<int>::addTo, &test ) );
}
Цель состоит в том, чтобы вставить каждый элемент контейнера toAdd, используя base :: add или base :: addTo, и захватить результаты bool в векторном результате