Pregunté this question anteriormente donde se presentó a solution. La solución es excelente en lo que respecta a la pregunta, pero ahora estoy confundido sobre cómo definiría los métodos fuera de de la clase, es decir, me gustaría definir los métodos en un archivo .inl
. ¿Cuál sería la sintaxis en este caso?Definición de métodos de clase de plantilla con enable_if como parámetro de plantilla
Para que quede claro, para una clase de plantilla, la definición del método será:
template <typename T>
struct Foo
{
Foo();
};
// C-tor definition
template <typename T>
Foo<T>::Foo()
{
}
¿cómo iba a definir los métodos de la clase de plantilla con enable_if
como uno de los parámetros?
template <typename Policy, enable_if< is_base<BasePolicy, Policy>::value >::type >
struct Foo
{
Foo();
};
// C-tor definition -- ???
¿Lo mismo que haría si lo definiera en línea? ¿Cuál es el problema? –
@KerrekSB: No estoy seguro de la sintaxis ... mis intentos actuales de extraer el constructor al archivo 'inl' resultaron en un error:' {ctor}: no es miembro de Foo '. La definición dentro de la propia estructura compila bien. –
Samaursa
Creo que el problema es que la "solución" publicada anteriormente no es realmente una solución: necesita extraer el tipo de 'enable_if <...>' o 'bool' de' enable_if_c <...> 'y usarlo como [predeterminado para] un parámetro de plantilla. Una vez hecho esto, queda claro cómo sería la definición de fuera de línea. –