我在Visual C ++包含文件<vector>
中看到函数后使用throw()
:
size_type capacity() const _NOEXCEPT
{ // return current length of allocated storage
return (this->_Myend - this->_Myfirst);
}
使用_NOEXCEPT
throw()
的宏,所以上面的内容如下所示:
size_type capacity() const throw()
{ // return current length of allocated storage
return (this->_Myend - this->_Myfirst);
}
但投掷是做什么的?我在this问题中看到了为什么这是一个不好的做法,但为什么在没有任何东西被抛出或被抓住时被放在那里?
答案 0 :(得分:4)
抛出异常规范在C ++ 11中已弃用,并替换为noexcept。
来自http://en.cppreference.com/w/cpp/language/noexcept_spec:
noexcept是throw()的改进版本,不推荐使用 C ++ 11。与throw()不同,noexcept不会调用std :: unexpected和may 或者可能不会展开堆栈,这可能允许编译器 在没有throw()的运行时开销的情况下实现noexcept。