2013-02-11 43 views
1

綜觀C++ RTTI和type_info類有時我找到一種方法的描述稱爲raw_name(),用於返回一個類的demangled名稱。我無法在g ++中找到任何實現,只能使用方法name()。你知道這是否只是針對Visual Studio/MS的實現,以及是否是C++標準的一部分?好奇心約RTTI RAW_NAME()

回答

3

這是實現特定type_info在標準在規定的:

C++ 03標準:18.7.1類TYPE_INFO:

namespace std { 
class type_info { 
public: 
virtual ~type_info(); 
bool operator==(const type_info& rhs) const noexcept; 
bool operator!=(const type_info& rhs) const noexcept; 
bool before(const type_info& rhs) const noexcept; 
size_t hash_code() const noexcept; 
const char* name() const noexcept; 
type_info(const type_info& rhs) = delete; // cannot be copied 
type_info& operator=(const type_info& rhs) = delete; // cannot be copied 
}; 
} 

正如你看到raw_data不是標準定義的類成員。

+0

oops一個錯字,引用來自C++ 11而不是C++ 03。 – 2013-02-11 12:12:32

+0

非常感謝您的澄清!大多數情況下,我在MSDN頁面(而不僅僅是)中找到raw_name()! – 2013-02-12 09:11:15

3

快速谷歌會顯示該raw_name()僅由微軟記錄。它不是C++的一部分。

+0

感謝約翰!我想清楚,在我的喜愛! – 2013-02-12 09:11:47