A debate came up at work regarding how much to care about using noexcept. We all know that noexcept doesn't really do a huge amount for the compiler's optimiser except for externally defined code which the compiler otherwise has to assume can throw because it can't know its implementation, so the only real other performance benefit of marking things noexcept is for code which makes use of std::move_if_noexcept<> which it would be assumed would be mostly STL containers and their algorithms.
The assessment would therefore be this: do not use noexcept unless:
extern functions and classes where the implementation of a callable isn't known to the compiler.
Move constructors, move assignment operators and swap for any type which might be contained in a STL container.
Otherwise don't worry about it.
Is this a fair assessment? Are there other places in the STL which generate much more optimal code if something is noexcept? If so, which STL implementation is this and what needs to be marked noexcept for it to work, and what performance benefit results (fewer memory allocations, lower complexity)?
Edit: Made CashCow's suggested change to wording.