Почему не срабатывает конструктор копирования?
class cl {
public:
static int s;
int s1;
int n;
cl(int n):n(n) { ++s; s1 = s; cout << "basic constructor " << s1 << "\n"; }
cl(const cl& nn):n(nn.n) { ++s; s1 = s; cout << "const copy " << s1 << "\n"; }
explicit operator int() { return n; }
};
int main(){
cl a(cl(8));
}
Выводит базовый конструктор, как так получается, что преобразовывает в число? и почему обычный конструктор не срабатывает при создании временного объекта?
Источник: Stack Overflow на русском