Я пытаюсь скомпилировать следующий фрагмент кода, я получаю сообщение об ошибке в строке, которая специализируется на 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