Разве не имеет смысла перегружать в отношении noexcept?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Разве не имеет смысла перегружать в отношении noexcept?

Сообщение Anonymous »

Я пытаюсь понять функцию noexcept .
Я знаю, что она может быть запутанной, но, кроме того, может быть выведен noexcept из вызовой функции, когда это возможно?

Код: Выделить всё

void f(){}
void f() noexcept{} // not allowed in c++

void g(){f();} // should call f
void h() noexcept{f();} // should call f noexcept
int main(){
g();
h();
}
< /code>
Если вызовая функция (h
) не имеет блока Try/catch, компилятор может сделать вывод, что пользователь заинтересован в том, чтобы призывать конкретный f.
, используется ли этот шаблон в какой -то другой обходной форме?

Код: Выделить всё

template void F() noexcept(NE);

template
void F() noexcept(true){}
template
void F() noexcept(false){}

void g(){F();} // calls F
void h() noexcept{F();} // call F
< /code>

Некоторые могут задаться вопросом, почему это имеет смысл.
Моя логика заключается в том, что C ++ позволяет перегружать по отношению к const < /code>, как аргумент функций, так и функция -член. Функции, чтобы вызвать noexcept 
«перегрузки», особенно если они не вызываются из блока try/catch.

Подробнее здесь: https://stackoverflow.com/questions/483 ... o-noexcept
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»