我正在尝试编译以下代码,在专门用于 std::vector 的行上出现错误,似乎传入的一个参数以某种方式被假定为两个参数。可能与尖括号有关吗?
是否有一种特殊的方式/机制可以将这些参数正确传递给宏?
#include <vector>
template<typename A>
struct AClass {};
#define specialize_AClass(X)\
template<> struct AClass<X> { X a; };
specialize_AClass(int) //ok
specialize_AClass(std::vector<int,std::allocator<int> >) //error
int main()
{
return 0;
}
我得到的错误如下:
1 Line 55: error: macro "specialize_AClass" passed 2 arguments, but takes just 1
2 Line 15: error: expected constructor, destructor, or type conversion before 'int'
3 compilation terminated due to -Wfatal-errors.
链接: http ://codepad.org/qIiKsw4l
原文由 Matthieu N. 发布,翻译遵循 CC BY-SA 4.0 许可协议
我有一个新的方法来解决这个麻烦。希望它可以帮助你:)