4

我在 Visual C++ 包含文件中看到<vector>使用throw()after 函数:

size_type capacity() const _NOEXCEPT
    {   // return current length of allocated storage
    return (this->_Myend - this->_Myfirst);
    }

使用_NOEXCEPT宏 for throw(),所以上面看起来像:

size_type capacity() const throw()
    {   // return current length of allocated storage
    return (this->_Myend - this->_Myfirst);
    }

但是投掷有什么作用呢?我在这个问题中看到了为什么这是一种不好的做法,但是为什么在没有抛出或捕获任何东西的情况下将其放在那里?

4

1 回答 1

4

抛出异常规范在 C++11 中已弃用,并由 noexcept 取代。

来自http://en.cppreference.com/w/cpp/language/noexcept_spec

noexcept 是 throw() 的改进版本,在 C++11 中已弃用。与 throw() 不同,noexcept 不会调用 std::unexpected 并且可能会或可能不会展开堆栈,这可能允许编译器在没有 throw() 的运行时开销的情况下实现 noexcept。

于 2014-01-04T11:06:00.083 回答