serious question: would you throw an exception if T2 cannot be created ? or use a variant data-type ? or something else altogether?
Sometimes an optional is better, such as when downstream already takes one.
Occasionally, checking whether the operation (and a bunch of others) would succeed is best, particularly in high-rel/high-av systems. There, you are probably also logging, first, what you are about to attempt.