我的代码在一行中返回true,在另一行中返回false。
例如,
struct Z{
static const int value = 10;
};
struct A : Z{
};
struct B : Z{
};
int main(){
if(std::is_same<A,B>::value){
static_assert(std::is_same<A,B>::value , "why am i here?");
}
return 0;
}
有人可以解释一下它抛出静态断言错误的原因吗?
答案 0 :(得分:5)
这是因为static_assert
是静态的(即:编译时)断言。它不关心上面的if
语句(在运行时评估)。