|
Boost Users : |
From: Schalk_Cronje_at_[hidden]
Date: 2004-10-13 06:57:53
Is there a known problem with boost::bind, volatile-qualified member functions and MSVC7.1? The following snippet of
code happily compiles with various incantations of gcc, but fails with MSVC7.1. The same applies for 'const volatile'.
#include <boost/function.hpp>
#include <boost/bind.hpp>
struct TEST
{
void gv0() volatile;
void gvc0() volatile const;
int gv2(int,int) volatile;
int gvc2(int,int) volatile const;
};
void instantiate()
{
TEST T;
boost::function< void() > gv0 =boost::bind(&TEST::gv0,&T);
// boost::function< int(int,int) > gv2 =boost::bind(&TEST::gv2,&T,_1,_2);
// boost::function< void() > gcv0=boost::bind(&TEST::gvc0,&T);
// boost::function< int(int,int) > gcv2=boost::bind(&TEST::gvc2,&T,_1,_2);
}
cl -c -TP -GS -GF -GR -vmv -vmg -EHsc -Zc:forScope -Zc:wchar_t -Op -Gm- -D_DEBUG -Od -Zi -Yd -MDd msvc71bind.cpp
(Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86)
******\boost\mem_fn.hpp(256) : warning C4180: qualifier applied to function type has no meaning; ignored
******\boost\bind\bind_template.hpp(156) : see reference to class template instantiation 'boost::_mfi::dm<R,T>' being compiled
with
[
R=void (void) volatile,
T=TEST
]
msvc71bind.cpp(21) : see reference to class template instantiation 'boost::_bi::bind_t<R,F,L>' being compiled
with
[
R=void (__thiscall &)(void) volatile,
F=boost::_mfi::dm<void (void) volatile,TEST>,
L=boost::_bi::list_av_1<TEST *>::type
]
******\boost\mem_fn.hpp(264) : warning C4180: qualifier applied to function type has no meaning; ignored
******\boost\mem_fn.hpp(274) : warning C4180: qualifier applied to function type has no meaning; ignored
******\boost\mem_fn.hpp(288) : warning C4180: qualifier applied to function type has no meaning; ignored
******\boost\mem_fn.hpp(293) : warning C4180: qualifier applied to function type has no meaning; ignored
******\boost\mem_fn.hpp(307) : warning C4180: qualifier applied to function type has no meaning; ignored
******\boost\bind.hpp(1572) : warning C4180: qualifier applied to function type has no meaning; ignored
msvc71bind.cpp(21) : see reference to function template instantiation 'boost::_bi::bind_t<R,F,L> boost::bind<void(void) volatile,TEST,TEST*>(void (__thiscall TEST::* ),A1)' being compiled
with
[
R=void (__thiscall &)(void) volatile,
F=boost::_mfi::dm<void (void) volatile,TEST>,
L=boost::_bi::list_av_1<TEST *>::type,
A1=TEST *
]
******\boost\mem_fn.hpp(286) : error C4716: 'boost::_mfi::dm<void __thiscall TEST::(void)volatile ,TEST>::operator()' : must return a value
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net