2013-07-24 52 views
6

我在我的Ubuntu Linux上搜索/usr/include/c++。在/usr/include/c++/stdexcept,我發現這一點:其中std :: out_of_range類是完全定義的嗎?

class out_of_range : public logic_error 
{ 
public: 
    explicit out_of_range(const string& __arg); 
}; 

但我找不到任何地方的out_of_range()構造函數的定義。

而且當STL拋出out_of_range()例外,它使用(從stl_vector.h採取爲例):

__throw_out_of_range(__N("vector::_M_range_check")); 

而且,我可以找到__throw_out_of_range()的唯一事情是:

void __throw_out_of_range(const char*) __attribute__((__noreturn__)); 

你能請指點一下out_of_range類的定義?

+1

你看過[這個頁面](http://en.cppreference.com/w/cpp/error/out_of_range)嗎? – abiessu

+0

+1好問題。也想知道。 – lulyon

+2

我在gcc上找到了gcc的github鏡像: ,第60行。 – lulyon

回答

0

這些在libstdc++這是gcc的一部分內置。你可以下載gcc-core-X.Y.Z.tar.bz2並在那裏找到它。

3

它們可能在libstdc++中定義。您可以在GCC website上獲得源代碼。在Ubuntu發行版上,您只需安裝該庫(libstdc++.so),而不是源代碼。你發現的東西只是聲明,而不是定義。

1

std::out_of_range§19.2.5類的C++ 11標準的out_of_range [out.of.range]完全定義。

相關問題