[英]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.