Здравствуйте.
Наткнулся сегодня на странное поведение компилятора.
Есть класс для простоты:
class A{
public:
A(int a = -1){}
void f(){}
};
тут все просто и очевидно.
Делаем инстанцирование:
A a();
a.f();
И получаем странную ошибку при компиляции:
ssd1306_128x32_i2c_test.ino:50:3: error: request for member 'f' in 'a', which is of non-class type 'A()'
А вот так
A a;
a.f();
все нормально.
Казалось бы, в обоих случаях у нас вызов конструктора, причем оба варианта подразумевают передачу первого аргумента со значением по умолчанию, но нет же, почему то в первом варианте происходит странная вещь, компилятор как-то не совсем корректно это воспринимает.
Допускаю что компилятор не совсем адекватный и немного устарел :)