[問題] noexcept 用法

作者: WangDaMing (王大明)   2021-06-21 22:27:07
最近看到一段code,我猜作用應該是檢查是否有noexcept屬性,所以用自己的方式寫了一下
請問這樣的確可以在compile time檢查這個class嘛??
其實我也不是很懂原理,這個new是讓compiler會啟動class 檢查嘛??
不確定這樣做沒問題嘛?
#include <iostream>
class TEST{
public:
TEST(){
throw 100;
}
};
int main()
{
if(noexcept(new (static_cast<TEST*>(nullptr)) TEST()))
{
printf("noexcept\n");
}else{
printf("not noexcept\n");
}
}
感謝!!
作者: g0010726 (Kevin)   2021-06-21 23:37:00
嗯... new expression 本身就非 noexcept建議可去看一下cppreference的 noexcept specifier頁面阿抱歉 突然發現你的code是用 placement new你可以在reference裡看noexcept規則基本上沒有標noexcept的func就是potentially throwing但有例外 像是符合條件的implicit constructor 規則有點複雜

Links booklink

Contact Us: admin [ a t ] ucptt.com