потому что если использовать using, то во всех сообщениях об ошибках компиляции, например, вываливается лапша weight (aka myint<weight_tag>) bla-bla-bla
У нас в проекте похожая проблема решается так:
struct weight : myint<weight> {
using myint::myint;
};
Так у myint есть информация о наследнике, и можно кастовать результат к нужному типу. Ну и операторы должны работать (в теории, мы их не перегружаем)