У меня есть следующий исходный код:
// main.cpp
#include "a.h"
int main() {
A::push(100);
}
// a.cpp
#include "a.h"
template <class T>
void A::push(T t) {
}
template void A::push(int t);
// a.h
#ifndef A_H
class A {
public:
template <class T>
static void push(T t);
};
#endif
Код скомпилирован очаровательно и без проблем под VC2008.
Но когда я прихожу к моему любимому VC6, он выдает мне ошибку:
main.obj: ошибка LNK2001: не устранена
внешний символ "public: static void
__cdecl A :: push (int) "(? push @ A @@ SAXH @ Z) * 1014 *
Есть ли обходной путь? Я просто хочу убедиться, что мое определение функции находится внутри файла cpp.