Я никогда не видел [[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;
проявится ли какое-либо поведение undefined?