, поэтому я получил неопределенную ссылочную ошибку при использовании явной реализации шаблона с полной специализацией класса шаблона, но вопрос в том, что частичная специализация класса шаблона проходит без ошибок.
код показывает, как показано ниже, кто-нибудь знает почему?В чем разница между полной специализацией и частичной специализацией в этой ситуации?
Заранее спасибо.
// t.h
#include <iostream>
using namespace std;
template <typename T1, typename T2>
class A {
public:
void foo();
};
// t2.cpp
#include "t.h"
template<typename T1>
class A<T1, int> {
public:
void foo() {
cout << "T1, int" << endl;
}
};
template<>
class A<int, int> {
public:
void foo() {
cout << "int, int" << endl;
}
};
template class A<float, int>;
template class A<int, int>;
// t.cpp
#include "t.h"
int main() {
A<float, int> a;
a.foo(); // no error
A<int, int> a1;
a1.foo(); // undefined reference error, why?
return 0;
}
Команды компиляции g++ t.cpp t2.cpp -o t
с gcc 4.8.5.