Я заменяю printf(/*heterogenous pack of arguments*/)
на LogMessage(/*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);
Почему эта работа не может (в первую очередь, не должно произойти приведение)? Как это сделать правильно?