On 11/09/2021 13:10, Joaquín M López Muñoz via Boost-users wrote:
Em 11 de set de 2021, à(s) 13:51, John Emmas via Boost-users
<boost-users@lists.boost.org> escreveu:
compiles now trigger a new assert in 'boost/intrusive/list.hpp':-
//Constant-time size is incompatible with auto-unlink hooks!
BOOST_STATIC_ASSERT(!(constant_time_size &&
((int)value_traits::link_mode == (int)auto_unlink)
));
The comment above the assert says it all. Take a look at how
constant_time_size<false> is used in the docs for auto-unlink hooks.
Thanks again Joaquin - AFAICT the only occurrences of
'constant_time_size' are within libboost itself. In fact for 'class
list_impl' it seems to be defined as a constant:-
static const bool constant_time_size = ConstantTimeSize;
However, I've realised that the problem I reported initially (today)
does seem to be connected to DLL linkage somehow. For example, this
code in a source file compiles okay:-
#include <boost/intrusive/list.hpp>
class Point : public boost::intrusive::list_base_hook<> {
};
whereas this seemingly minor change:-
#include <boost/intrusive/list.hpp>
class __declspec(dllexport) Point : public
boost::intrusive::list_base_hook<> {
};
will immediately invoke this compile-time assertion:-
"BOOST_STATIC_ASSERT(( (int)hooktags::link_mode == (int)auto_unlink ));"
- i.e. the message I reported earlier...
So (presumably ?) 'boost::intrusive::list_base_hook<>' can't be used in
a class that'll get exported from a DLL?
John
_______________________________________________
Boost-users mailing list
Boost-users@lists.boost.org
https://lists.boost.org/mailman/listinfo.cgi/boost-users