On 12/09/2021 9:26, John Emmas via Boost-users wrote:
On 11/09/2021 14:59, John Emmas wrote:

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?


Just wondering if anyone can reproduce this?  Today I've tried 3 x different revisions of libboost:- 1.77, 1.74 and 1.71 - but they all give me the same assertion message.  So maybe it's an intentional limitation?

John


hi,

Sorry about being missing these days. When you declare something as declspec the compiler must instantiate the class including all base classes. A base hook has members that have only sense when some options are used so the instantiation fails. To sum up: yes, boost.intrusive is not prepared to be used in a DLL interface.

Best,

Ion
_______________________________________________
Boost-users mailing list
Boost-users@lists.boost.org
https://lists.boost.org/mailman/listinfo.cgi/boost-users

Reply via email to