auto std::initializer_list поведение при присваивании.
От: SomeOne_TT  
Дата: 22.07.18 17:05
Оценка:
#include "stdafx.h"
#include <initializer_list>
#include <string>
#include <iostream>
void test_func()
{
    auto strides = { 1, 1, 1, 1 };
    std::cout << *strides.begin() << " " << *(strides.begin() + 1) << " "
        << *(strides.begin() + 2) << " "
        << *(strides.begin() + 3) << " "
        <<  std::endl;

    
    strides = { 1, 2, 2, 1 };
    std::cout << *strides.begin() << " " << *(strides.begin() + 1) << " "
        << *(strides.begin() + 2) << " "
        << *(strides.begin() + 3) << " "
        << std::endl;
}
int main()
{
    test_func();
    return 0;
}



MSVC 2015 debug x86/x64
1 1 1
1
1 2 2
1

MSVC 2015 release x86/x64
1 1 1
1
1 1 1
1

MSVC 2017 debug x86/x64
1 1 1
1
1 2 2
1

MSVC 2017 release x86 присваивание полностью сломано и выдает значения из глубин океана
1 1 1 1
1948491747 2715648 13964870 1948491771

ЧЯДНТ?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.