In my program (creating a BigNum class), I have a templated non-explicit constructor. This constructor uses a ostringstream object and then parses. If data is valid, it is stored in the BigNum object. Hence, you can use the = sign on any type with an ostream<< operator defined. I find it very useful and was wondering if there is a general opinion on whether this is bad programming practice.