The problem is that you cannot add a new constraints on the type of A when you re-export the constructor. Otherwise, you would have two contradictory views on A : the original definition for which A has type 'a. 'a t and the re-exported one where A necessarily has type int t.