2011-09-17 13 views
5

Este código supuestamente funciona con GCC - Estoy tratando de que funcione con Visual Studio. No puedo averiguar si el código es realmente defectuoso o si no estoy haciendo algo bien con el puerto.No entiendo este error de C++ - error C2101: '&' en constante

1>c:\somepath\aaa.h(52): error C2101: '&' on constant 
1>   c:\somepath\aaa.h(52): while compiling class template member function 'const blahblah::Message something::AClass<Type>::aMethod(void) const' 
1>   with 
1>   [ 
1>    Type=const lala::BClass& 
1>   ] 
1>   c:\somepath\bbb.h(79) : see reference to class template instantiation 'something:AClass<Type>' being compiled 
1>   with 
1>   [ 
1>    Type=const lala::BClass& 
1>   ] 
1> MyApplication.cpp 

archivos

aaa.h:52   virtual const Type aMethod() const { return Type(); } 

bbb.h:79   AClass<const BClass&> blahblahblah_; 
+0

Cute little bug this. Me gusta. –

+0

¿Es esta una versión reciente? Parece que VS2010 ha rediseñado este mensaje de error. – MSalters

+0

Bueno; es un poco de un diagnóstico de basura aquí. –

Respuesta

8

Construir T() donde T es un tipo de referencia no es válida, y no tiene sentido. Algunas versiones de gcc lo aceptan incorrectamente.

+0

+1: Lo has clavado. –

+0

GCC 4.5.1 lo hace bien, incluido el mensaje de error: http://ideone.com/DOHb3 "error: inicialización de valor no válida de los tipos de referencia" – MSalters

Cuestiones relacionadas