С ++ 17 Агрегированные инициализации

Я смотрю видео сериал на YouTube от Jason Tuner, и об этом конкретном видео можно найти здесь: Агрегированные инициализации он начинает с использования clang ++ c ++ 03, а затем меняет компилятор на clang ++ c ++ 11, затем, когда он включает иерархию базовых классов, он меняет ее на использование c ++ 17 или c ++ 1z с использованием недавней сборки clang ++.

Я только что скачал и установил MSVS2017RC, и я использую 64-разрядную версию Windows 7 SP1 на Intel Quad Core Extreme.

Однако, когда я пытаюсь следить за его видео, имея это в моей IDE

struct B {
double q;
};

struct S : B {
int i;
float f;
};

int main() {
S s{ {}, 1, 2.3f };
return s.f;
}

Я получаю эту ошибку компилятора:

1>------ Build started: Project: Test1z, Configuration: Debug Win32 ------
1>stdafx.cpp
1>Test1z.cpp
1>c:\users\skilz80\documents\visual studio 2017\projects\test1z\test1z\test1z.cpp(15): error C2440: 'initializing': cannot convert from 'initializer list' to 'S'
1>c:\users\skilz80\documents\visual studio 2017\projects\test1z\test1z\test1z.cpp(15): note: No constructor could take the source type, or constructor overload resolution was ambiguous
1>c:\users\skilz80\documents\visual studio 2017\projects\test1z\test1z\test1z.cpp(16): warning C4244: 'return': conversion from 'float' to 'int', possible loss of data
1>Done building project "Test1z.vcxproj" -- FAILED.
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

Есть ли в Visual Studio 2017 поддержка этих функций, которые есть в c ++ 17? Если это так, существуют ли специальные параметры компилятора, которые необходимо установить в свойствах проекта? Или это в настоящее время эксклюзивно для Clang или GCC? Что является основной причиной ошибки компилятора MS C2440 если это должен быть компилятор c ++ 17?

4

Решение

Visual Studio 2017 не поддерживает все или большинство C ++ 17 в настоящее время. Среди вещей, которые он не поддерживает, — агрегатная инициализация базовых классов.

6

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]