Согласно MSDN __declspec(nothrow) -- это майкрософтовский эквивалентен спецификатору throw(). Поведение функции со спецификатором throw несколько отличается от поведения функции с спецификатором noexcept в случае возникновения исключения, которое не будет поймано такой функцией: throw() вызывает std::unexpected, а noexcept прямиком идёт в std::terminate.