如何将此宏转换为 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__);
}
显然第二个没有编译,我假设我必须更改语法但不知道如何。
如何将此宏转换为 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)...);
}
这支持完美转发。