计划:main.cpp
struct X {
int x;
};
export template <class T> T const& min(T const&, T const&);
int main()
{
return min(2, 3);
}
x.cpp
struct X {
int x;
};
export template <class T> T const& min(T const &a, T const &b) {
return a<b ? a : b;
}
错误:使用gcc编译
export.cpp:23: warning: keyword ‘export’ not implemented, and will be ignored
export.cpp: In function ‘int main()’:
export.cpp:27: error: call of overloaded ‘min(int, int)’ is ambiguous
swap.cpp:16: warning: keyword ‘export’ not implemented, and will be ignored
错误:使用EDG编译器进行编译
export.cpp", line 27: error: more than one instance of overloaded function
export.cpp", line 23: error: support for exported templates is disabled
swap.cpp", line 16: error: support for exported templates is disabled
有人能解决这个问题吗?
有人解释导出关键字的用法吗?
答案 0 :(得分:7)
export关键字非常无用,据我所知,EDG是唯一可以实现它的编译器。该关键字在C ++ 0x中已弃用。至于它的用法 - 甚至不考虑它。
答案 1 :(得分:2)
看起来您的编译器不支持单独的模板编译。通常的做法是不使用单独的模板编译并在头文件中分发模板。除此之外,我发现了几个问题。
P.S。我从未见过任何使用导出模板的代码。不久前,当我学习C ++时,我尝试的每个编译器都不支持导出的模板。难怪它将从C ++中弃用。
答案 2 :(得分:0)
export
关键字已经discussed here on SO。