Этот код не выполняется, потому что компилятор видит ту же самую специализацию дважды .
Ваша проблема в том, что typedef
, несмотря на свое имя, не определяет новый тип.Он генерирует только псевдоним для другого типа.type1
и type2
и int
на самом деле просто разные имена для одного и того же типа.
Что лучше всего сделать, зависит от того, чего вы хотите достичь.Если вам абсолютно необходима эта специализация, вам придется придумать два разных типа.Тем не менее, могут быть лучшие способы сделать это.