SH
struct
X{
template <class Ty>
void foo(Ty);
template<>
void foo(int);
template<>
void foo(char*);
}
Здравствуй, ошибка линкера :)Size: a a a
SH
struct
X{
template <class Ty>
void foo(Ty);
template<>
void foo(int);
template<>
void foo(char*);
}
Здравствуй, ошибка линкера :)D
SH
struct
X{
template <class Ty>
void foo(Ty);
template<>
void foo(int);
template<>
void foo(char*);
}
Здравствуй, ошибка линкера :)SH
SK
D
unresolved external symbol
- LNK2019D
D
D
extern template void X::foo<int>(int)
ниже определения X
: работает и в целом вполне наглядно, но выглядит так себеAS
struct
X{
template <class Ty>
void foo(Ty);
template<>
void foo(int);
template<>
void foo(char*);
}
Здравствуй, ошибка линкера :)struct X{
template <class Ty>
void foo(Ty);
};
template<> inline void X::foo(int) {
std::cout << "int";
}
template<> inline void X::foo(char) {
std::cout << "char";
}
D
struct X{
template <class Ty>
void foo(Ty);
};
template<> inline void X::foo(int) {
std::cout << "int";
}
template<> inline void X::foo(char) {
std::cout << "char";
}
D
struct X{Текущий вариант
template <class Ty>
void foo(Ty);
};
extern template void X::foo(int)
SK
AS
// h
#pragma once
struct X{
template <class Ty>
void foo(Ty);
};
template<> void X::foo(int);
template<> void X::foo(char);
// cpp
#include "h"
template<> void X::foo(int) {
std::cout << "int";
}
template<> void X::foo(char) {
std::cout << "char";
}
AG
SK
AG
ДЖ
Н
C