我以前从没见过在非void返回函数上使用[[noreturn]]。
以下代码定义正确吗?
[[ noreturn ]] int function();
int function(){
while(true){/* impl */}
return 0;
}
返回类型必须是int
的原因是,该函数通过函数指针传递给另一个函数。
因此,假设调用方看起来像这样:
//call the non-returning function
int var = (*fptr)();
//use var some way (even though the function will never actually return)
std::cout << var;
这会导致任何未定义的行为吗?