Предлагается совершенно невинный на вид кусок кода на C++. Здесь нет ни шаблонов, ни виртуальных функций, ни наследования, но создатели этого чудесного языка спрятали грабли посреди чистa поля.
Вопрос: какой тип у переменной b? Совсем не тот, который можно было бы предположить на первый взгляд.
struct A {
A (int i) {}
};
struct B {
B (A a) {}
};
int main () {
int i = 1;
B b(A(i)); // (1)
return 0;
}
* This source code was highlighted with Source Code Highlighter.
Вопрос: какой тип у переменной b? Совсем не тот, который можно было бы предположить на первый взгляд.