有没有比这更好的方法(或另一种方法)来判断两个变量在编译时是否具有相同的类型:
auto var1 = ..;
auto var2 = ..;
static_assert(std::is_same<decltype(var1), decltype(var2)>::value);
答案 0 :(得分:1)
是否有更好的方法(或另一种方法)来判断两个变量是否具有 编译时的类型与此相同:
好吧,您可以使用辅助变量模板std::is_same_v
template< class T, class U >
inline constexpr bool is_same_v = is_same<T, U>::value;
然后它将变成
static_assert(std::is_same_v<decltype(var1), decltype(var2)>);
答案 1 :(得分:0)
在编译时是否有更好的方法来判断两个变量是否具有相同类型?
不,std::is_same
是必经之路。您当然可以将std::is_same_v
用作@ L.F。发表评论,但这基本上是相同的哲学。
还有另一种方法来判断两个变量在编译时是否具有相同类型?
是的,如此answer所示。
答案 2 :(得分:0)
尚不完全清楚这里的实际问题是什么,但是确保两个变量具有相同类型的最简单方法是这样写:
{'A': [{'test_1': 90, 'test_2': 80, 'test_3': 95}], 'B': [{'test_1': 92, 'test_2': 75, 'test_3': 80}, {'test_1': 80, 'feature_2': 81, 'test_3': 82}]}
如果您是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
的类型不同,则模板实例化将失败。