Gegeben:Funktion Spezialisierung: Welche ist die Deklaration?
template<class T>
struct test {
void foo(int b);
void testFunc(int a)
{
}
};
void test::foo(int b)
{
}
template<>
void test<float>::testFunc(int a)
{
}
void someFunction()
{
}
Wir wissen, dass "test::foo
" eine Erklärung, in der Testklasse, und eine Definition außerhalb der Klassendefinition.
Wir wissen auch, dass "someFunction
" eine Erklärung hat, die auch seine Definition ist.
In ähnlicher Weise "test::testFunc
" (nicht spezialisiert), hat eine Erklärung, die auch seine Definition ist.
Wird die Spezialisierungsfunktion "test<float>::testFunc
" mit der Deklaration von "testFunc
" innerhalb der Klasse "Test" deklariert und separat definiert, oder ist deren Deklaration auch die Definition?