What this C++ type-conversion question tests
This is a fundamental C++ language question that probes your understanding of user-defined and standard conversions—a core topic in interview rounds at firms that rely on precise C++ semantics. The question asks you to trace through a code snippet and predict its output, which requires you to know the order and rules by which the compiler applies implicit conversions.
To answer correctly, you need to understand how constructors, conversion operators, and the conversion hierarchy interact. The C++ standard defines a strict sequence for resolving ambiguities: when a value must be converted from one type to another, the compiler considers user-defined conversions (via constructors or operator overloads) alongside standard conversions (like integral promotion or pointer conversions). Getting this right depends on knowing which conversion ranks higher and when the compiler will or will not apply them.
- Constructor-based conversions and explicit vs. implicit eligibility
- Conversion operators (operator T)
- The C++ conversion hierarchy and overload resolution
- Edge cases where conversions are ambiguous or ill-formed