[我有一个接受格式字符串+参数的方法(右边为printf(),但是,我为此使用可变参数模板:
template<typename... Args>
static void log(const char* pszFmt, Args&&... args)
{
doSomething(pszFmt, std::forward<Args>(args)...);
}
一些args可以是std :: string实例。是否可以确保doSomething永远不接受std :: string,而是始终接受const char*
而不是接受传递给std::string
的每个源log()
?
换句话说,我需要一种方法来将所有args
转发到doSomething()
,使所有std::string
参数替换为std::string::c_str()
返回的内容。
提前感谢!
您可以定义自己的“转发”方法:
C ++ 17版本