c++ - 模板参数列表太少问题

标签 c++ templates visual-c++ gcc partial-specialization

谁能告诉我如何使以下伪代码与 GCC4 兼容?我想知道它在 MSVC...

下是如何工作的
typedef int TypeA;
typedef float TypeB;

class MyClass
{
// No base template function, only partially specialized functions...
    inline TypeA myFunction<TypeA>(int a, int b) {} //error: Too few template-parameter-lists
    template<> inline TypeB myFunction<TypeB>(int a, int b) {}
};

最佳答案

该构造的正确编码方式是:

typedef int TypeA;
typedef float TypeB;
class MyClass
{
    template <typename T> 
    T myFunction( int a, int b );
};
template <> 
inline TypeA MyClass::myFunction<TypeA>(int a, int b) {}
template <> 
inline TypeB MyClass::myFunction<TypeB>(int a, int b) {}

请注意,模板成员函数必须在类声明内部声明,但特化必须在类声明外部定义,在命名空间级别。

关于c++ - 模板参数列表太少问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6029305/

相关文章:

c++ - 从 vector 的 vector 创建一个板

c++ - 无效的模板实例和元程序编译正常?

c++ - 无状态 lambda 作为静态局部变量

visual-c++ - 如何处理 C++ 代码中的外来词?

visual-studio-2008 - 您可以在加载的项目上制作VC++解决方案集预处理器#defines吗?

c++ - 有没有办法通过类型单独获取 vector 的字节大小?

c++ - 我可以部分实现接口(interface)层次结构吗?

c++ - 无法弄清楚如何使用 C++ 中的链表按从 a 到 z 的顺序显示字母表

c++ - 为什么不允许具有不同数量模板参数的类/结构声明?

c++ - 如何修复试图包含预处理器找不到的文件的 Visual Studio 模板?