Ich habe effektiv folgendes Problem: Ich möchte mit -Wall -Wextra -Werror
jedoch bauen zu können, der folgende Code wird über nicht verwendete Parameter beschweren:einen variadische Parameter Pack (void) Casting
struct foo
{
template <typename... Args>
static void bar()
{ }
template <typename T, typename ... Args>
static void bar(T&& value, Args&& ... args)
{
#ifdef DEBUG
std::cout << value;
bar(std::forward<Args>(args)...);
#endif
}
};
Die zunächst nicht verwendeter Parameter ist einfach zu beheben:
#ifdef DEBUG
std::cout << value;
bar(std::forward<Args>(args)...);
#else // Shut the compiler up
(void) value;
#endif
Meine Frage ist, wie kann ich dies tun, mit args
den übrigen? Weder
(void)(args...);
Nor
(void)(args)...;
arbeiten, klagen sowohl über den Parameter Pack nicht erweitert.
(Dies ist unter GCC 4.7.3, wenn das für eine mögliche Lösung einen Unterschied machen wird).
Sie nennen sie nicht, zu bearbeiten, so dass es beschwert sich nur, wenn Ihr nicht ein Debug-Build – aaronman
@aaronman Sie werden genannt haben zu tun, weil sie (bedingt, je nach '# DEBUG') verwendet. – Yuushi
Ehrlich klingt das hässlich, aber Sie könnten den Namen in ein ifdef auch setzen – aaronman