[英]Cast variadic template type to void, expected ')' before
在我的代码中,我使用variadic模板函数作为日志记录机制。 如果定义了DEBUG
宏,则打印一条消息; 如果没有定义DEBUG
,那么它应该什么都不打印。
我的代码:
#ifdef DEBUG
inline void LOG_CHAT(){ }
template<typename First, typename ...Rest>
void LOG_CHAT(First && first, Rest && ...rest){
std::cout << std::forward<First>(first);
LOG_CHAT(std::forward<Rest>(rest)...);
}
#else
template<typename ...Rest>
void LOG_CHAT(Rest && ...rest){
(void)(rest...);
}
#endif
我会把函数定义留空,但我不想得到“未使用的参数”编译器警告。 因此,参数(s)被转换为void以消除编译器警告。 但是,施放会导致下面再现的另一个错误。
错误:预期')'在'休息'之前'UNUSED(... rest);
注意:在宏'UNUSED'的定义中#define UNUSED(x)(void)(x)
因此,我的主要目标是通过转换为void
或使用任何其他方法来消除编译器警告。 但如果我能够把它变为void
我会更高兴。
您可以在没有参数名称的LOG_CHAT
下发布LOG_CHAT
,这将禁止警告。
void LOG_CHAT(Rest && ...)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.