我從來沒有見過[[ noreturn ]]之前用過無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;
將本次展覽任何一種未定義行爲?
您可能會遇到迂腐麻煩,並假定執行的結果是無限循環結束。 ([link](http://blog.regehr.org/archives/161)) – chris
@chris我希望用[[maybe_unused]]標記返回值。 –
從您發佈的鏈接:*如果具有此屬性的功能實際返回,則行爲未定義。* – 101010