-1
我有一個代碼,在一行中返回true,在另一行中爲false。std :: is_same <A,B> ::值爲真1行,假2行
例如,
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;
}
是否有人可以解釋爲什麼它拋出一個靜態斷言錯誤?
因爲'A'和'B'不一樣。 – tkausl
http://en.cppreference.com/w/cpp/language/static_assert – juanchopanza
「if」控制運行時流程。如果您希望僅在運行時檢查,則不要使用靜態斷言,而要使用普通的運行時斷言。編譯後立即對static_assert進行測試,如果其條件不成立,則編譯失敗。 –