Не совсем понятно, в чем здесь реальная проблема, но самый простой способ убедиться, что две переменные имеют одинаковый тип, - написать их так:
int var1 = /* whatever */;
int var2 = /* whatever */; // var1 and var2 have the same type
, если вы фанатauto
вместо написания фактического типа, вы можете написать код, который просто определяет вторую переменную того же типа, что и первая:
auto var1 = /* whatever */;
decltype(var1) var2 = /* whatever */; // var1 and var2 have the same type
другая возможность - написать функцию-шаблон, которая принимает два аргументатого же типа:
template <class Ty> void f(Ty var1, Ty var2) { /* do something */ }
f(var1_expression, var2_expression);
, если типы var1_expression
и var2_expression
не совпадают, создание шаблона завершится неудачей.