C++ implementation: named constructors