In file included from test.cpp:2:0:
/usr/include/c++/4.9/functional: In instantiation of ‘struct std::_Bindres_helper<void, void (OperationExecutor<__gnu_cxx::__normal_iterator<ItemA*, std::vector<ItemA> > >::*)(Operation&, __gnu_cxx::__normal_iterator<ItemA*, std::vector<ItemA> >, __gnu_cxx::__normal_iterator<ItemA*, std::vector<ItemA> >), std::reference_wrapper<OperationExecutor<__gnu_cxx::__normal_iterator<ItemA*, std::vector<ItemA, std::allocator<ItemA> > > > >, Operation&, __gnu_cxx::__normal_iterator<ItemA*, std::vector<ItemA, std::allocator<ItemA> > >&, __gnu_cxx::__normal_iterator<ItemA*, std::vector<ItemA, std::allocator<ItemA> > >&>’:
/usr/include/c++/4.9/functional:1650:5: required by substitution of ‘template<class _Result, class _Func, class ... _BoundArgs> typename std::_Bindres_helper<_Result, _Func, _BoundArgs>::type std::bind(_Func&&, _BoundArgs&& ...) [with _Result = void; _Func = void (OperationExecutor<__gnu_cxx::__normal_iterator<ItemA*, std::vector<ItemA> > >::*)(Operation&, __gnu_cxx::__normal_iterator<ItemA*, std::vector<ItemA> >, __gnu_cxx::__normal_iterator<ItemA*, std::vector<ItemA> >); _BoundArgs = {std::reference_wrapper<OperationExecutor<__gnu_cxx::__normal_iterator<ItemA*, std::vector<ItemA, std::allocator<ItemA> > > > >, Operation&, __gnu_cxx::__normal_iterator<ItemA*, std::vector<ItemA, std::allocator<ItemA> > >&, __gnu_cxx::__normal_iterator<ItemA*, std::vector<ItemA, std::allocator<ItemA> > >&}]’
test.cpp:27:51: required from ‘void OperationExecutor<TIter>::execute(Operation&, TIter, TIter) [with TIter = __gnu_cxx::__normal_iterator<ItemA*, std::vector<ItemA> >]’
test.cpp:65:64: required from here
/usr/include/c++/4.9/functional:1640:2: error: invalid abstract parameter type ‘Operation’
type;
^
test.cpp:13:7: note: because the following virtual functions are pure within ‘Operation’:
class Operation {
^
test.cpp:17:23: note: virtual EItemType Operation::type() const
virtual EItemType type() const = 0;
^
test.cpp:18:18: note: virtual void Operation::handle(Item&)
virtual void handle(Item&) = 0;
^
test.cpp: In instantiation of ‘void OperationExecutor<TIter>::execute(Operation&, TIter, TIter) [with TIter = __gnu_cxx::__normal_iterator<ItemA*, std::vector<ItemA> >]’:
test.cpp:65:64: required from here
test.cpp:27:51: error: no matching function for call to ‘bind(void (OperationExecutor<__gnu_cxx::__normal_iterator<ItemA*, std::vector<ItemA> > >::*)(Operation&, __gnu_cxx::__normal_iterator<ItemA*, std::vector<ItemA> >, __gnu_cxx::__normal_iterator<ItemA*, std::vector<ItemA> >), std::reference_wrapper<OperationExecutor<__gnu_cxx::__normal_iterator<ItemA*, std::vector<ItemA> > > >, Operation&, __gnu_cxx::__normal_iterator<ItemA*, std::vector<ItemA> >&, __gnu_cxx::__normal_iterator<ItemA*, std::vector<ItemA> >&)’
std::ref(*this), oper, first, last);
^
test.cpp:27:51: note: candidates are:
In file included from test.cpp:2:0:
/usr/include/c++/4.9/functional:1623:5: note: template<class _Func, class ... _BoundArgs> typename std::_Bind_helper<std::__or_<std::is_integral<typename std::decay<_Tp>::type>, std::is_enum<typename std::decay<_Tp>::type> >::value, _Func, _BoundArgs ...>::type std::bind(_Func&&, _BoundArgs&& ...)
bind(_Func&& __f, _BoundArgs&&... __args)
^
/usr/include/c++/4.9/functional:1623:5: note: template argument deduction/substitution failed:
/usr/include/c++/4.9/functional: In substitution of ‘template<class _Func, class ... _BoundArgs> typename std::_Bind_helper<std::__or_<std::is_integral<typename std::decay<_Tp>::type>, std::is_enum<typename std::decay<_Tp>::type> >::value, _Func, _BoundArgs ...>::type std::bind(_Func&&, _BoundArgs&& ...) [with _Func = void; _BoundArgs = {}]’:
test.cpp:27:51: required from ‘void OperationExecutor<TIter>::execute(Operation&, TIter, TIter) [with TIter = __gnu_cxx::__normal_iterator<ItemA*, std::vector<ItemA> >]’
test.cpp:65:64: required from here
/usr/include/c++/4.9/functional:1623:5: error: forming reference to void
test.cpp: In instantiation of ‘void OperationExecutor<TIter>::execute(Operation&, TIter, TIter) [with TIter = __gnu_cxx::__normal_iterator<ItemA*, std::vector<ItemA> >]’:
test.cpp:65:64: required from here
/usr/include/c++/4.9/functional:1650:5: note: template<class _Result, class _Func, class ... _BoundArgs> typename std::_Bindres_helper<_Result, _Func, _BoundArgs>::type std::bind(_Func&&, _BoundArgs&& ...)
bind(_Func&& __f, _BoundArgs&&... __args)
^
/usr/include/c++/4.9/functional:1650:5: note: substitution of deduced template arguments resulted in errors seen above
|