опция g ++, чтобы показать, какие классы создаются из шаблонов - PullRequest
5 голосов
/ 04 декабря 2011

Есть ли опция g ++, которая показывает, какие классы создаются из шаблонов?Например, есть определение шаблона в исходном исходном коде:

template <class T>
struct SomeStruct { T variable; };

SomeStruct<int> instance;

, и я хотел бы увидеть реализацию SomeStruct .

Ответы [ 2 ]

4 голосов
/ 04 декабря 2011

Вы можете получить эту информацию с флагом -fdump-class-hierarchy. В нем будет гораздо больше, чем вы просите, но если искать строки, начинающиеся с Class, вы найдете то, что ищете.

РЕДАКТИРОВАТЬ : Вот некоторые выходные данные программы, которая включает iostream. Вы можете видеть, что есть экземпляры char и wchar_t:

Class std::basic_ostream<char, std::char_traits<char> >
Class std::basic_ostream<char, std::char_traits<char> >::sentry
Class std::basic_ostream<wchar_t, std::char_traits<wchar_t> >
Class std::basic_ostream<wchar_t, std::char_traits<wchar_t> >::sentry
Class std::basic_istream<char, std::char_traits<char> >
Class std::basic_istream<wchar_t, std::char_traits<wchar_t> >
Class std::basic_istream<char, std::char_traits<char> >::sentry
Class std::basic_iostream<char, std::char_traits<char> >
Class std::basic_istream<wchar_t, std::char_traits<wchar_t> >::sentry
Class std::basic_iostream<wchar_t, std::char_traits<wchar_t> >
0 голосов
/ 04 декабря 2011

Реализация так же очевидна, как и кажется: вы вводите реальный тип для T.

struct SomeStruct<int> { int variable; };
...