如何将这个宏转换成cpp风格的constexpr?
#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, "TAG", __VA_ARGS__)
类似这样。
constexpr auto LOGD(...){
__android_log_print(ANDROID_LOG_DEBUG, "TAG", __VA_ARGS__);
}
很明显,第二个不能编译,我想我必须改变语法,但我不知道如何改变。
类似这样的东西。
template<class... Args>
auto LOGD(const Args&... args) {
return __android_log_print(ANDROID_LOG_DEBUG, "TAG", args...);
}
但为什么要这样做呢?constexpr
是不清楚的。__android_log_print
本身不是 constexpr
.
根据Evg的回答,你也可以写。
template<class... Args>
auto LOGD(Args&&... args) {
return __android_log_print(ANDROID_LOG_DEBUG, "TAG", std::forward<Args>(args)...);
}
这支持完美转发。