¿Por qué la función std :: acumulate muestra la suma incorrecta de un vector <double>?

Considere el siguiente código para agregar todos los elementos de unvector:

#include<iostream>
#include<algorithm>
#include<numeric>
#include<vector>
using namespace std;
int main(void)
{

   std::vector<double> V;
   V.push_back(1.2);
   V.push_back(3.6);
   V.push_back(5.6);
   double sum = accumulate(V.begin(),V.end(),0);

   cout << "The sum of the elements of the vector V is " << sum << endl;
   return 0;
}

Cuando compilo esto en Cygwin en Windows y lo ejecuto, obtengo la salida en el terminal como

La suma de los elementos del vector V es 9.

losaccumulate&nbsp;La función parece estar redondeando todos los números y sumándolos, lo que explicaría la respuesta.

¿Es esto algo malo con el compilador Cygwin g ++, o mi interpretación errónea deaccumulate&nbsp;función para sumar unavector&nbsp;dedoubles?