Копировать конструктор фигурных скобок инициализации

мы можем инициализировать объекты класса, для которого у нас нет определения конструктора, используя:

поэлементная инициализация.копия инициализации.инициализация по умолчанию.

Например:

    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

Язык программирования C ++ 4-е изд. Глава 17.3.1

Например:

   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;
     }

Это должно работать, хотя я получаю ошибку компилятора столько же с GCC, сколько с Clang. Ошибка "невозможно преобразовать данные в int " в обоих компиляторах. Однако при реализации конструктора копирования эта ошибка исчезает или не реализуя ее, а используя синтаксис круглых скобок. Проблема немного глупая, и изменение фигурных скобок позволяет решить проблему. Но почему не соблюдаются правила TC ++ PL ?, это проблема компилятора или ям что-то недопонимаю? Заранее спасибо.

Ответы на вопрос(1)

Ваш ответ на вопрос