знаков вопроса, чтобы оно завелось (написано с прицелом на то, что метод Log будет использован в конкретных реализациях LogInfo, LogError и т.д.)?
enum class LogType
{
INFO_TYPE,
ERROR_TYPE
};
template< enum LogType, typename... Args > struct LogImpl{ ... };
template< typename... Args > struct LogImpl< LogType::INFO_TYPE, Args... >{ ... };
template< typename... Args > struct LogImpl< LogType::ERROR_TYPE, Args... >{ ... };
template< enum LogType, typename... Args >
void Log( enum LogType type, const char* fmt, Args&&... args )
{
auto logger = GetLogger( "some_logger" );
if( logger )
{
LogImpl< ???, Args... > impl;
impl.Log( logger, fmt, std::forward< Args >( args )... );
}
}
Видимо, подразумевалось это? template <LogType type, typename... Args > void Log(const char* fmt, Args&&... args ) { auto logger = GetLogger( "some_logger" ); if( logger ) { LogImpl<type, Args...> impl; impl.Log(logger, fmt, std::forward< Args >( args )... ); } }
Да, оно, благодарю
Обсуждают сегодня