
I guess I can answer my own question now: It's probably not a good idea, because of this function in the base class FinalT& operator= (FinalT that) { base_type::swap_unlocked(that); return static_cast< FinalT& >(*this); } FinalT would in this case not point to the most-derived type, making this a very strange operator=. My question now is: How do I derive my own logger that has its own data member(s) without having to duplicate ctors, etc. So far I've come up with this ... class Logger : public ::boost::log::sources::basic_composite_logger< char, Logger, ::boost::log::sources::multi_thread_model< ::boost::log::aux::light_rw_mutex >, typename ::boost::log::sources::features< ::boost::log::sources::severity< Severity >, ::boost::log::sources::channel< std::string > >::type > { public: BOOST_LOG_FORWARD_LOGGER_CONSTRUCTORS(Logger) void SetMinimumSeverity(Severity severity); Severity GetMinimumSeverity(); bool AllowRecord(Severity severity); private: volatile Severity minimumSeverity; }; ... but this of course leaves minimumSeverity uninitialized. I tried to implement default & copy ctor myself & use BOOST_LOG_PARAMETRIZED_CONSTRUCTORS_FORWARD, but that left me with strange errors. Thanks, -- Andreas Huber When replying by private email, please remove the words spam and trap from the address shown in the header.