Warning d'alignement templates+MFC
Bonjour,
au boulot, j'ai un warning en Release sous Visual 2008 dans le code d'un template instancié avec une classe dérivée d'MFC.
Voici le warning :
Citation:
CongesView.cpp
d:\(...)\EventHandler.h(42) : warning C4121: 'event::MemberEventHandler<R,ARG>' : alignment of a member was sensitive to packing
with
[
R=CCongesView,
ARG=const CacheConges &
]
d:\(...)\CongesView.h(201) : see reference to class template instantiation 'event::MemberEventHandler<R,ARG>' being compiled
with
[
R=CCongesView,
ARG=const CacheConges &
]
Ce qu'en dit M$ : http://msdn.microsoft.com/en-us/libr...a3(VS.80).aspx
Une partie du code du template (pas de pragma pack nulle part dans cette petite lib) :
Code:
1 2 3 4 5 6 7 8 9 10
| template <typename R, typename ARG = EventArg>
class MemberEventHandler : public EventHandlerBase<ARG>
{
public:
typedef void (R::*MemHandlerFun)( ARG );
private:
MemHandlerFun handler_;
R & receiver_;
}; |
Une partie du code utilisant le template (pas de pragma pack la non plus) :
Code:
1 2 3 4 5 6 7 8
| class CongesView: public CFormView
{
};
class CCongesView : public CongesView, public SaveE0, public LoadE0, public Description0
{
event::MemberEventHandler<CCongesView, CacheConges const &> CacheCongesModifiedEventHandler;
}; |
D'où vient ce warning et comment le virer ?