typesafe typedef em C ++

Gostaria de usar algo como typedef nos meus programas C ++ para melhorar a segurança do tip

Como exemplo, suponha que eu tenha duas funções

void function1(unsigned idOfType1);
void function2(unsigned idOfType2);

então posso erroneamente passar idOfType2 para function1 e vice-versa. Eu quero que o compilador me dê um erro neste caso. Estou ciente de que poderia agrupar esses sinais em uma estrutura, mas seria necessário fornecer um nome de campo e usar. para acessá-los, o que é um pouco inconveniente. Existe uma boa maneira de contornar isso?

Edit: Tanto quanto eu seitypedef não funcionará para esse fim, pois é apenas um atalho para um tipo e não será usado para verificação de tip

questionAnswers(14)

yourAnswerToTheQuestion