#define UNUSED(x) xОднако, этот способ не работает в некоторых компиляторах (в том смысле, что не убирает предупреждение). Саттер предлагает определить простой шаблон:
template<class T> void ignore( T& ) { }Можно это определение поместить в неймспейс для избежания конфликтов, чего нельзя сделать с макросом. Следует отметить, что параметр функции ignore<T> следует оставить без имени, чтобы не получить предупреждение теперь уже в другом месте.
Использовать шаблонную функцию довольно просто:
static void Constraints(D* p) { B* pb = p; ignore(pb); // portably suppresses the warning }От себя хотел бы дополнить, что лучше писать так:
template<class T> void ignore( const T& ) { }Это необходимо по причинам, которые обсуждались на stackoverflow.com.
UPD:Саттер услышал замечание насчет const и обновил свое сообщение.