第1行中的std :: is_same <a,b> :: value == true,第2行中为false

时间:2017-09-11 22:20:10

标签: c++ templates

我的代码在一行中返回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;
}

有人可以解释一下它抛出静态断言错误的原因吗?

1 个答案:

答案 0 :(得分:5)

这是因为static_assert是静态的(即:编译时)断言。它不关心上面的if语句(在运行时评估)。