VS bug: new int(1,2,"wtf")
От: Кодт Россия  
Дата: 05.03.15 15:02
Оценка: 32 (6) :))) :)))
Чудеса си-стайл-каста.
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 работает правильно.
Перекуём баги на фичи!
Отредактировано 06.03.2015 10:04 Кодт . Предыдущая версия . Еще …
Отредактировано 05.03.2015 15:04 Кодт . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.