TITLE: conversion operators and single arg constructors RL: Roman Lechtchinsky I have a question about conversion operators and constructors. Consider the following: class X { X( Y ); }; class Y { operator X(); }; SC: clamage@Eng.Sun.COM (Steve Clamage), 19 Mar 96 A constructor taking a single argument is a type conversion operator from the argument type to the class type. The arrangement you show is always going to lead to ambiguity errors. There are two ways to convert a Y to an X, and neither is preferred over the other. Operator conversion functions should normally be avoided, partly for this reason, and partly because they can wind up being used in surprising circumstances. The compiler might find a conversion that allows erroneous code to compile. RL: Now the second one: class A { A(B); }; class B { operator A&(); }; SC: This is the same situation. There is no syntactic difference between using a reference or an object. Once again, there are two ways to make an A out of a B, and neither is preferred.