Почему swap может кидать исключение?
От: Максим Рогожин Россия  
Дата: 27.04.18 13:15
Оценка:
Привет,
объясните, пожалуйста, вот этот код из STL:
template <class T, size_t N>
void swap(T (&a)[N], 
          T (&b)[N]) noexcept(noexcept(swap(*a, *b)));

Здесь условный noexcept. Но почему вообще swap(*a, *b) может кидать исключение? Ведь swap вроде бы гарантированно не кидает исключений?
Re: Почему swap может кидать исключение?
От: Jack128  
Дата: 27.04.18 13:24
Оценка: 2 (1)
Здравствуйте, Максим Рогожин, Вы писали:

МР> Ведь swap вроде бы гарантированно не кидает исключений?


struct A {};
void swap (A& a, A& b) { throw 1; }
Re: Почему swap может кидать исключение?
От: koenjihyakkei Россия  
Дата: 27.04.18 13:30
Оценка: 3 (2)
Здравствуйте, Максим Рогожин, Вы писали:

Мейерс. Эффективное использование C++. Правило 25
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.