2

これは動作しない私のコードの一部です:

template<typename T>
list<T> f(list<list<T> >& lst,
          void (*op)(list<T>&, list<T>&))
{
    list<list<T> >::iterator itr = lst.begin();

    int count = 0;
    for_each(lst.begin(), lst.end(),
             [&count](list<T> l){ count += l.size(); });

    list<T> res(count);
    res.insert(res.end(), itr->begin(), itr->end());

    sort(res.begin(), res.end());

    return res;
}

VS2012 コンパイラはエラー C2784 を示します:

error C2784: ''unknown-type' std::operator -(std::move_iterator<_RanIt> &,const 
std::move_iterator<_RanIt2> &)' : could not deduce template argument for 
'std::move_iterator<_RanIt> &' from 'std::_List_iterator<_Mylist>'

電話してみた

sort<T>(res.begin(), res.end());

しかし、メッセージを受け取りました:

cannot convert parameter 1 from 'std::_List_iterator<_Mylist>' to 'int'
4

2 に答える 2