Copia inicializacion de llaves de constructor.

"podemos inicializar objetos de una clase para los cuales no hemos definido ningún constructor usando:

inicialización de miembros.copia inicializacioninicialización por defecto.

Por ejemplo:

    struct Work {
      string author;
      string name;
      int year;
    };

    Work s9 { "Bethoven",
              "Symphony No. 9 in D minor, Op. 125; Choral",
              1824
            };                    // memberwise initialization

    Work currently_playing {s9};  // copy initialization
    Work none {};                 // default initialization

El lenguaje de programación C ++ 4ª ed. Capítulo 17.3.1

Por ejemplo:

   struct Data
     {
        int mMember1;
        float mMember2;
        char mMember3;
     };

     int main()
     {
         Data aData_1{1,0.3,33};
         Data aData_2{aData_1};

         return EXIT_SUCCESS;
     }

Esto debe funcionar, aunque obtengo un error de compilación tanto con GCC como con Clang. El error es "no se pueden convertir datos a int" en ambos compiladores. Sin embargo, al implementar el constructor de copia, este error desaparece o no se implementa, pero se utiliza la sintaxis de llaves. El problema es un poco estúpido y al cambiar el rizado por los tirantes redondos se resuelve el problema. Pero, ¿por qué no se siguen las reglas de TC ++ PL ?, ¿es un problema del compilador o estoy entendiendo mal algo? Gracias por adelantado.

Respuestas a la pregunta(1)

Su respuesta a la pregunta