我在项目中使用了LOG_MACRO(..),如果要在某些已定义的类中使用它,我想对其进行升级以使其不执行任何操作。我是通过模板专门化做到的。 但是我在静态函数中遇到编译错误。因为那里没有“ this”。
我需要一个神奇的宏来给我当前成员函数的类。如果我在静态函数中使用它,它必须给出void。
template<class T> struct ZZLogDisable { static constexpr bool Value = false; };
//this will give me compile error if used in static functions since this is not available there
#define LOG_MACRO(msg) if(!ZZLogDisable<std::remove_reference<decltype(*this)>::type>::Value) { printf(msg); }
//disable logging for a class
#define DISABLE_LOG(Class) template<> struct ZZLogDisable<Class> { static constexpr bool Value = true; };