Информация об изменениях

Сообщение VS bug: new int(1,2,"wtf") от 05.03.2015 15:02

Изменено 05.03.2015 15:04 Кодт

Чудеса си-стайл-каста.
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"); // int((int)"wtf") - т.е. reinterpret_cast
p = new int(foo(),bar(),buz(),"wtf"); // выполняет foo(), bar(), buz(), new int((int)"wtf")

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 совершенно справедливо ругается во всех случаях, кроме первых двух.