вопрос по boost::lambda
От: pf79 Украина  
Дата: 02.07.05 10:48
Оценка:
Есть такой код:
namespace Filter{

class ResultType {...};
class SubExpression
{
public:
  virtual ResultType Result()=0;
};
typedef boost::shared_ptr<SubExpression> SPtrSubExpression;
............
void F()
{
   namespace la=boost::lambda;
   ResultType r;
   vector<SPtrSubExpression> v; 
..................................
   vector<SPtrSubExpression>::const_iterator i=find_if(v.begin(), v.end(), 
        la::bind(&SubExpression::Result, *la::_1)==r);
}

}


На что компилер вываливает ошибку:

c:\Program Files\boost-1-32-0\boost\tuple\detail\tuple_basic.hpp(419): error C2259: 'Filter::SubExpression' : cannot instantiate abstract class


Компилер VC++ 7.1
boost 1.32.0

Если чисто виртуальную ф-цию Result() заменить на просто виртуальную — то все компилит. Но этого делать не хочется по различным соображениям.
В чем я неправ ??
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.