catch vector越界时throw的out_of_range时必须#include 的问题
我知道out_of_range是stdexcept中定义的一个类
但是,vector中没有关于这个类的声明的话,它是怎么抛出这个类的
/************** 上面有点没说清楚 **************/
查到vector中代码的时候发现它使用的是__throw_out_of_range_fmt()这个函数;
这个函数只在functexcept.h中找到了它的声明,定义被隐藏起来了?
#include <iostream>
using namespace std;
int main()
{
__throw_out_of_range("out_of_range");
return 0;
}
这样写是能成功编译的,运行也会提示程序抛出了out_of_range
我这里并没有 #include <stdexcept>
也就是并没有声明过out_of_range这个类
却能够抛出它,所以混乱了
问题的关键就是 __throw_out_of_range这个函数的定义