【发布时间】:2020-07-28 23:06:46
【问题描述】:
我有一个接受格式字符串 + 参数的方法(就像 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* 而不是传递给 log() 的每个源 std::string?
换句话说,我需要一种将所有args 转发到doSomething() 的方法,将所有std::string 参数替换为std::string::c_str() 返回的参数。
提前致谢!
【问题讨论】:
标签: c++ templates stl variadic-templates