19#ifndef USAGE_IS_THREAD_SAFE
20# define USAGE_IS_THREAD_SAFE
33 virtual void renounce( std::string_view tool_name, std::string_view key ) = 0;
39 void renounce( std::string_view, std::string_view )
override {}
43 std::function<void( std::string_view, std::string_view )>
m_func;
46 template <std::invocable<std::
string_view, std::
string_view> F>
48 void renounce( std::string_view tool_name, std::string_view key )
override {
m_func( tool_name, key ); }
59 return Logger{ std::move( func ) };