Сообщение VS bug: new int(1,2,"wtf") от 05.03.2015 15:02
Изменено 06.03.2015 10:04 Кодт
Чудеса си-стайл-каста.
gcc совершенно справедливо ругается во всех случаях, кроме первых двух.
int* p;
// вот так - задумано
p = new int(1); // new int(1)
p = new int(12.34); // new int(12)
p = new int("wtf"); // ошибка компиляции
// а вот так - внезапно!
p = new int(1,2,3); // new int(3) !
p = new int(1,2,3.4); // new int(3) - т.е. static_cast
p = new int(1,2,"wtf"); // new int((int)"wtf") - т.е. reinterpret_cast
p = new int(foo(),bar(),buz(),"wtf"); // выполняет foo(), bar(), buz(), отдаёт new int((int)"wtf")
gcc совершенно справедливо ругается во всех случаях, кроме первых двух.
VS bug: new int(1,2,"wtf")
Чудеса си-стайл-каста.
gcc совершенно справедливо ругается во всех случаях, кроме первых двух.
UPD. VS2012. На 2013 там ICE, на 2015 работает правильно.
int* p;
// вот так - задумано
p = new int(1); // new int(1)
p = new int(12.34); // new int(12)
p = new int("wtf"); // ошибка компиляции
// а вот так - внезапно!
p = new int(1,2,3); // new int(3) !
p = new int(1,2,3.4); // new int(3) - т.е. static_cast
p = new int(1,2,"wtf"); // new int((int)"wtf") - т.е. reinterpret_cast
p = new int(foo(),bar(),buz(),"wtf"); // выполняет foo(), bar(), buz(), отдаёт new int((int)"wtf")
gcc совершенно справедливо ругается во всех случаях, кроме первых двух.
UPD. VS2012. На 2013 там ICE, на 2015 работает правильно.