2009/7/29 Mathias Gaunard <mathias.gaunard@ens-lyon.org>
1) struct S {
 static const size_t maxsize =5;
};

2) struct S {
 static size_t maxsize;
};

3) struct S {
 size_t maxsize;
};


Applied to S, the code doesn't compile in 1 and returns false in 2.

Is there a fix that can make it work for 1, 2 and 3 ?

No.
Static members and non-static ones are very different things, and each requires usage of a different macro.
BOOST_HAS_STATIC_MEMBER_DATA and BOOST_HAS_MEMBER_DATA.

It explains why 2 returns false, but does not explain why 1 does not compile.

Roman Perepelitsa.