template <typename T>
int add_value(T &&a)
{
return a;
}
template <typename T, typename... U>
int add_value(T &&a, U &&... b)
{
return a + add_value(std::forward<U>(b)...);
}
struct string_cat_functor
{
public:
std::string operator()(void)
{
return {};
}
template<typename T, typename ...ARGS>
std::string operator ()(T&& value, ARGS&&... args)
{
os << value;
operator()(std::forward<ARGS&&>(args)...);
return os.str();
}
private:
std::stringstream os;
};
#define LOG_FATAL(args...) L_FATAL(string_cat_functor()(args).data());
#define LOG_ERROR(args...) L_ERROR(string_cat_functor()(args).data());
#define LOG_WARN(args...) L_WARN(string_cat_functor()(args).data());
#define LOG_NOTE(args...) L_NOTE(string_cat_functor()(args).data());
#define LOG_INFO(args...) L_INFO(string_cat_functor()(args).data());
#define LOG_DEBUG(args...) L_DEBUG(string_cat_functor()(args).data());
LOG_WARN ("Increase the boundary: " , "(offset: " , offset , ", length: ",length,")" , " to - " , variable_types.at(index));
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。