Такое стоит пожалуй заносить в палату мер и весов идиотского синтаксиса. Давно знал, что стандарт разрабатывали люди с сексуальными девиациями, но чтоб настолько...
thambs писал: Давно знал, что стандарт разрабатывали люди с сексуальными девиациями
Компилятор весьма вольно трактует некоторые вещи. Ему всё равно, вообщем-то.
Что навскидку вспомнил: модификаторы можно писать подряд несколько раз, например const const и это тоже соберётся.
Или const char *const foo.
Причём в первом случае будет варнинг, а во втором нет.
Добавлено 14-09-2019 в 10:10:
А всё потому что модификатор допускается объявлять как до типа, так и после.
Добавлено 14-09-2019 в 10:20:
И вот еще замечательный пример
C++ Source Code:
1
class foo
2
{
3
my_class *base;
4
void Init( const my_class *base )
5
{
6
base = base;
7
}
8
};
член класса останется непроинициализированным. Никаких варнингов не будет выдано.
XaeroX
Так ведь два раза же, не? bool -> int -> bool, первое при вычитании, корректная операция, приводим тип выше по иерархии абстракций; а вот дальше получается, что "теряем точность" (в кавычках). ЕМНИП, а там разве нет флага компилятору что бы такое неявное приведение сверху-вниз запретить?