1562 / 481 / 105
Регистрация: 17.05.2015
Сообщений: 1,467
|
|||||||||||||||||||||
1 | |||||||||||||||||||||
Bug компилятора с++ Visual Studio 2015? Или undefined behavior ?05.06.2019, 14:25. Показов 1394. Ответов 1
Метки нет (Все метки)
Всем привет!
Наткнулась на одну любопытную штуку. Оказывается typedef можно объявлять повторно! У них иммунитет против множественного объявления. Можно делать вот так:
Где можно об этом почитать? Кто ни будь может привести цитату из стандарта, где об этом написанно? А то может на самом деле так делать нельзя? Может быть такое использование - UB? Теперь о проблемах. Следующий код успешно компилируется на всех трех компиляторах (gcc/clang/cl):
Код
warning C4700: uninitialized local variable 'v' used ведь переменная в коде явным образом инициализирована. Если закомментировать повторный алиас:
Дальше - ещё интереснее. Следующий код успешно собирается gcc/clang С компилятором msvc2015 update 1 творится что-то очень странное:
Код
Error(s): C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE\xlocnum(1341): error C2065: '_Buf': undeclared identifier C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE\xlocnum(1338): note: while compiling class template member function 'std::ostreambuf_iterator<wchar_t,std::char_traits<wchar_t>> std::num_put<wchar_t,std::ostreambuf_iterator<wchar_t,std::char_traits<wchar_t>>>::do_put(_OutIt,std::ios_base &,_Elem,const void *) const' with [ _OutIt=std::ostreambuf_iterator<wchar_t,std::char_traits<wchar_t>>, _Elem=wchar_t ] C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE\xlocnum(1573): note: see reference to class template instantiation 'std::num_put<wchar_t,std::ostreambuf_iterator<wchar_t,std::char_traits<wchar_t>>>' being compiled C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE\xlocnum(1342): error C2065: '_Buf': undeclared identifier Microsoft (R) C/C++ Optimizing Compiler Version 19.00.23506 for x64 То ли использование повторного алиаса приводит к UB, то ли мелкомягкие опять накосячили... Не понятно, легально ли использовать повторные алиасы, или это - UB ?
0
|
05.06.2019, 14:25 | |
Ответы с готовыми решениями:
1
Bug компилятора с++ Visual Studio 2017? Совместимость компилятора 2015 с visual studio 2010 Visual Studio 2015 или Embarcadero RAD Studio 10.1 Berlin (C++ Builder) Ошибка или баг Visual Studio 2015? |
6770 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
|
|
05.06.2019, 14:35 | 2 |
Сообщение было отмечено eva2326 как решение
Решение
1
|
05.06.2019, 14:35 | |
05.06.2019, 14:35 | |
Помогаю со студенческими работами здесь
2
Установка C++ Redistributable Visual Studio 2017 и Visual C++ для Visual Studio 2015 Какая среда лучше: Visual Studio 2015 или 2017? Имеются ли отличия в компиляторах у сред разработки Visual Studio 2006 и Visual Studio 2015 ? Bug компиляторов Visual Studio? Install Shield 2015 и Visual Studio 2015 Community Ошибка при установке Visual Studio Community 2015: Пакет установки отсутствует или поврежден Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |