crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> QMap & boost::bind
gpepsi
  опции профиля:
сообщение 12.9.2011, 13:25
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 73
Регистрация: 31.3.2010
Пользователь №: 1582

Спасибо сказали: 0 раз(а)




Репутация:   0  


было
#include <QtCore/QCoreApplication>
#include <boost/bind.hpp>
#include <algorithm>
#include <map>
struct Some
{
    bool is_exist (void) const { return false; }
};
typedef std::map<int, Some>    TSome;
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    TSome some;
    TSome::iterator it = std::find_if(
        some.begin(), some.end(),
        boost::bind(&Some::is_exist, boost::bind(&TSome::value_type::second, _1))
    );
    return a.exec();
}


заменил на
#include <QtCore/QCoreApplication>
#include <boost/bind.hpp>
#include <algorithm>
#include <QMap>
struct Some
{
    bool is_exist (void) const { return false; }
};
typedef QMap<int, Some>    TSome;
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    TSome some;
    TSome::iterator it = std::find_if(
        some.begin(), some.end(),
        boost::bind(&Some::is_exist, boost::bind(&TSome::iterator::value, _1))
    );
    return a.exec();
}


получил
Раскрывающийся текст

1>------ Build started: Project: xxx, Configuration: Debug Win32 ------
1> main.cpp
1>D:\3RDPARTY\boost\1.47.0\boost/bind/mem_fn_template.hpp(105): error C2784: 'T *boost::get_pointer(const std::auto_ptr<_Ty> &)' : could not deduce template argument for 'const std::auto_ptr<_Ty> &' from 'const Some'
1> D:\3RDPARTY\boost\1.47.0\boost/get_pointer.hpp(25) : see declaration of 'boost::get_pointer'
1> D:\3RDPARTY\boost\1.47.0\boost/bind/mem_fn_template.hpp(115) : see reference to function template instantiation 'R boost::_mfi::cmf0<R,T>::call<const U>(U &,const void *) const' being compiled
1> with
1> [
1> R=Some &,
1> T=QMap<int,Some>::iterator,
1> U=Some
1> ]
1> D:\3RDPARTY\boost\1.47.0\boost/bind/bind.hpp(243) : see reference to function template instantiation 'R boost::_mfi::cmf0<R,T>::operator ()<A1>(const U &) const' being compiled
1> with
1> [
1> R=Some &,
1> T=QMap<int,Some>::iterator,
1> A1=Some,
1> U=Some
1> ]
1> D:\3RDPARTY\boost\1.47.0\boost/bind/bind_template.hpp(318) : see reference to function template instantiation 'R boost::_bi::list1<A1>::operator ()<Some&,F,A>(boost::_bi::type<T>,F &,A &,long)' being compiled
1> with
1> [
1> R=Some &,
1> A1=boost::arg<1>,
1> F=boost::_mfi::cmf0<Some &,QMap<int,Some>::iterator>,
1> A=const boost::_bi::list1<Some &>,
1> T=Some &
1> ]
1> D:\3RDPARTY\boost\1.47.0\boost/bind/bind.hpp(237) : see reference to function template instantiation 'Some &boost::_bi::bind_t<R,F,L>::eval<const boost::_bi::list1<A1>>(A &)' being compiled
1> with
1> [
1> R=Some &,
1> F=boost::_mfi::cmf0<Some &,QMap<int,Some>::iterator>,
1> L=boost::_bi::list1<boost::arg<1>>,
1> A1=Some &,
1> A=const boost::_bi::list1<Some &>
1> ]
1> D:\3RDPARTY\boost\1.47.0\boost/bind/bind.hpp(243) : see reference to function template instantiation 'Some &boost::_bi::list1<A1>::operator []<T&,boost::_mfi::cmf0<R,QMap<Key,T>::iterator>,boost::_bi::list1<boost::arg<I>>>(boost::_bi::bind_t<R,F,L> &) const' being compiled
1> with
1> [
1> A1=Some &,
1> T=Some,
1> R=Some &,
1> Key=int,
1> I=1,
1> F=boost::_mfi::cmf0<Some &,QMap<int,Some>::iterator>,
1> L=boost::_bi::list1<boost::arg<1>>
1> ]
1> D:\3RDPARTY\boost\1.47.0\boost/bind/bind_template.hpp(32) : see reference to function template instantiation 'R boost::_bi::list1<A1>::operator ()<bool,F,boost::_bi::list1<Some &>>(boost::_bi::type<T>,F &,A &,long)' being compiled
1> with
1> [
1> R=bool,
1> A1=boost::_bi::bind_t<Some &,boost::_mfi::cmf0<Some &,QMap<int,Some>::iterator>,boost::_bi::list1<boost::arg<1>>>,
1> F=boost::_mfi::cmf0<bool,Some>,
1> T=bool,
1> A=boost::_bi::list1<Some &>
1> ]
1> C:\Program Files\Microsoft Visual Studio 10.0\VC\include\algorithm(83) : see reference to function template instantiation 'bool boost::_bi::bind_t<R,F,L>::operator ()<T>(A1 &)' being compiled
1> with
1> [
1> R=bool,
1> F=boost::_mfi::cmf0<bool,Some>,
1> L=boost::_bi::list1<boost::_bi::bind_t<Some &,boost::_mfi::cmf0<Some &,QMap<int,Some>::iterator>,boost::_bi::list1<boost::arg<1>>>>,
1> T=Some,
1> A1=Some
1> ]
1> C:\Program Files\Microsoft Visual Studio 10.0\VC\include\algorithm(95) : see reference to function template instantiation '_InIt std::_Find_if<_Iter,_Pr>(_InIt,_InIt,_Pr)' being compiled
1> with
1> [
1> _InIt=QMap<int,Some>::iterator,
1> _Iter=QMap<int,Some>::iterator,
1> _Pr=boost::_bi::bind_t<bool,boost::_mfi::cmf0<bool,Some>,boost::_bi::list1<boost::_bi::bind_t<Some &,boost::_mfi::cmf0<Some &,QMap<int,Some>::iterator>,boost::_bi::list1<boost::arg<1>>>>>
1> ]
1> main.cpp(21) : see reference to function template instantiation '_InIt std::find_if<QMap<Key,T>::iterator,boost::_bi::bind_t<R,F,L>>(_InIt,_InIt,_Pr)' being compiled
1> with
1> [
1> _InIt=QMap<int,Some>::iterator,
1> Key=int,
1> T=Some,
1> R=bool,
1> F=boost::_mfi::cmf0<bool,Some>,
1> L=boost::_bi::list1<boost::_bi::bind_t<Some &,boost::_mfi::cmf0<Some &,QMap<int,Some>::iterator>,boost::_bi::list1<boost::arg<1>>>>,
1> _Pr=boost::_bi::bind_t<bool,boost::_mfi::cmf0<bool,Some>,boost::_bi::list1<boost::_bi::bind_t<Some &,boost::_mfi::cmf0<Some &,QMap<int,Some>::iterator>,boost::_bi::list1<boost::arg<1>>>>>
1> ]
1>D:\3RDPARTY\boost\1.47.0\boost/bind/mem_fn_template.hpp(105): error C2784: 'T *boost::get_pointer(T *)' : could not deduce template argument for 'T *' from 'const Some'
1> D:\3RDPARTY\boost\1.47.0\boost/get_pointer.hpp(18) : see declaration of 'boost::get_pointer'
1>D:\3RDPARTY\boost\1.47.0\boost/bind/mem_fn_template.hpp(105): error C2784: 'T *boost::get_pointer(const boost::reference_wrapper<T> &)' : could not deduce template argument for 'const boost::reference_wrapper<T> &' from 'const Some'
1> D:\3RDPARTY\boost\1.47.0\boost/ref.hpp(182) : see declaration of 'boost::get_pointer'
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========


можно ли их подружить ?

Сообщение отредактировал gpepsi - 12.9.2011, 13:27
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 26.12.2024, 18:31