函数声明后的C ++ throw()(_ NOEXCEPT)

时间:2014-01-04 10:49:14

标签: c++ function throw noexcept

我在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问题中看到了为什么这是一个不好的做法,但为什么在没有任何东西被抛出或被抓住时被放在那里?

1 个答案:

答案 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。