Digamos que tiene la función de plantilla simple (no miembro de la clase en aras de la simplicidad) con especialización específica tipo en el mismo archivo .h ...¿Se permite al compilador ignorar en línea en caso de especialización de plantillas?
template <class TYPE>
void some_function(TYPE& val)
{
// some generic implementation
}
template <>
inline void some_function<int>(int& val)
{
// some int specific implementation
}
menos que usted indique explícitamente que inline
compilador para la especialización (inline
palabra clave) obtendrá un error de enlace si el archivo .h está incluido más de una vez (al menos lo hago en Visual C++ 2008).
Todos sabemos que inline
es solo una sugerencia para el compilador, que puede ignorar. En este caso particular, ¿el compilador puede ignorar esta sugerencia y dejar que el enlazador falle?
Esta es otra de esas esquinas oscuras de C++. –
Lea esto: http://stackoverflow.com/questions/1759300/c-when-should-i-write-the-keyword-inline-for-a-function-method/1759575#1759575 –