调试打印解压缩可变参数模板函数参数

问题描述 投票:1回答:1

我正在尝试创建常规的调试打印功能。

enum class DebugLevel : uint8_t
{
    INFO     = 0,
    EVENT    = 1,
    WARNING  = 2,
    ERROR    = 3,
    CRITICAL = 4
};

DebugLevel generalDebugLevel = DebugLevel::INFO;

template <typename ...T>
void DPRINT (DebugLevel dbgLevel, T&& ...args)
{
    if (dbgLevel >= generalDebugLevel)
    {
       std::cerr << __FILE__ << ":" << __LINE__ << " " << args... << std::endl;
    }
}

如您所见,将其传递给<任何线索?

我正在尝试创建常规的调试打印功能。枚举类DebugLevel:uint8_t {INFO = 0,EVENT = 1,WARNING = 2,ERROR = 3,CRITICAL = 4}; DebugLevel ...

c++ c++11 templates variadic-templates variadic-functions
1个回答
3
投票
template <typename ...T>
void DPRINT (DebugLevel dbgLevel, T&& ...args)
{
    if (dbgLevel >= generalDebugLevel)
    {
       std::cerr << __FILE__ << ":" << __LINE__ << " ";
       using expander = int[];
       (void)expander{0, (void(std::cerr << std::forward<T>(args) << " "),0)...};
       std::cerr << std::endl;
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.