2011-12-04 12 views
5

¿Hay alguna opción de g ++ que muestre qué clases se crean a partir de plantillas? Por ejemplo, existe definición de plantilla en el código fuente original:opción g ++ para mostrar qué clases se crean desde las plantillas

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

SomeStruct<int> instance; 

y me gustaría ver la implementación de SomeStruct < int>.

Respuesta

4

Puede obtener esa información con la bandera -fdump-class-hierarchy. Enumerará mucho más de lo que está pidiendo, pero si busca líneas que comiencen con Class, encontrará lo que está buscando.

EDIT: Aquí hay algunos resultados de un programa que incluye iostream. Usted puede ver que hay instancias de char y 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> > 
-1

La implementación es tan obvia como parece: pones el tipo real para T.

struct SomeStruct<int> { int variable; }; 
+0

Y si la plantilla está especializada para la int? –

Cuestiones relacionadas