Внутренняя ошибка компилятора VS2015 при использовании наследующих конструкторов

Вот 10-строчная программа на C ++ 11, значительно упрощенная по сравнению с программой, над которой я работаю:

template <typename T> class Base { public:
template <typename S> Base(S x) {}
};
template <typename T> class Child : public Base<T> { public:
using Base<T>::Base;
};
template <> class Child<int> : public Base<int> { public:
using Base<int>::Base;
};

int main()
{
Child<int> child(8.0f);
}

Результаты MSVC 2015:

1>------ Build started: Project: MyProject, Configuration: Debug Win32 ------
1>  filename.cpp
1>path\to\filename(10): fatal error C1001: An internal error has occurred in the compiler.
1>  (compiler file 'msc1.cpp', line 1393)
1>   To work around this problem, try simplifying or changing the program near the locations listed above.
1>  Please choose the Technical Support command on the Visual C++
1>   Help menu, or open the Technical Support help file for more information

Нотабене Поддержка MSVC 2015 для наследования конструкторов новый с этой версией.

Я уже представил отчет об ошибке по этому поводу, так как по крайней мере компилятор не должен падать. Однако могу ли я получить подтверждение того, что это правильное использование C ++ / обходной путь?

Сообщение об ошибке Вот

9

Решение

Как уже упоминалось в комментариях, похоже, это проблема MSVC. Быстро скомпилировал его с помощью Clang и -std = c ++ 11, никаких проблем нет.

6

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


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