如何施放转发参数包
How to cast a forwarded parameter pack?
我正在用LogMessage(/*arguments*/)
替换printf(/*heterogenous pack of arguments*/)
。
但是,我得到了
错误c2665'swprintf_s':两个超载都无法转换全部 参数类型
template<class ...T>
auto DwarfCuda::LogMessage(T&&... args) -> void
{
wchar_t updatedMessage[256];
swprintf_s(updatedMessage, forward<T>(args)...); //C2665
if (LogMessageChangedCallback != nullptr)
LogMessageChangedCallback(updatedMessage);
}
它适用于许多示例,但与此相关:
LogMessage( " GPU Max Clock rate: %.0f MHz (%0.2f GHz)n",
deviceProp.clockRate * 1e-3f, deviceProp.clockRate * 1e-6f);
为什么不能首先进行这项工作(演员表不应该发生)?如何正确执行此操作?
问题是在LogMessage
的调用中:格式字符串必须为wstring
,因此L" GPU Max Clock rate: %.0f MHz (%0.2f GHz)n"
中的L
不存在触发了该错误。
相关文章:
- 是否可以在不扣除的情况下将模板参数转发到 make_*?
- 可变参数模板参数转发使用逗号运算符
- 如何通过可变参数模板将多个构造函数参数转发到数组初始值设定项列表?
- 将可变参数函数参数转发到 std::function 对象
- 我如何实现变异模式以将可变数量的参数转发到C 11中的函数
- 无临时实例的参数转发
- 如何将构造函数参数转发到 boost::optional
- 如何使包装类将其构造函数参数转发到 std::vector 的构造函数?
- 如何将 CMake 参数转发到外部项目
- 使用std::forward而不是将参数转发到另一个函数
- 使用declard和参数转发构造函数隐式复制结构
- 将可变参数模板参数转发到多个类成员
- Template()的参数转发使构造函数参数变为常量
- 我怎样才能完美地将参数转发到 STL 集合
- 如何在 C++11 中使用可变参数模板正确创建显式参数转发函数
- 使用默认参数转发引用
- 将可变模板参数转发到类似printf的函数
- static_cast的参数转发
- Boost.Program_options:将"--"后面的参数转发到另一个程序
- 将参数转发给模板成员函数