[问题] 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