Für den konkreten Fall, dass der übergebene int größer oder gleich 0 sein muss, würde ich einfach "unsigned int" statt "int" verwenden. Dann ist es nicht mehr das Problem des Konstruktors, sondern des Benutzers desselben ;-) -- Reden ist Schweigen und Silber ist Gold.
Für den konkreten Fall, dass der übergebene int größer oder gleich 0 sein muss, würde ich einfach "unsigned int" statt "int" verwenden. Dann ist es nicht mehr das Problem des Konstruktors, sondern des Benutzers desselben ;-)
das sowieso -- class God : public ChuckNorris { };