У меня есть следующая функция, которая вычисляет среднее значение:
template<typename... Ts>
auto mean_of(const Ts... values)
{
return (... + values) / static_cast<double>(sizeof...(Ts));
}
С VS 2017 15.6.0 Preview 3 следующий код
std::cout << mean_of(1, 3);
выводит 2.5
. Кажется, что MSVC интерпретирует выражение fold как 1 + 3 / N
, а не как (1 + 3) / N
. Если я добавлю дополнительные скобки вокруг выражения fold, результат будет правильным. С помощью GCC дополнительных скобок не требуется.
Является ли это ошибкой в MSVC или нужны дополнительные скобки?