在尝试编写调用 MPL 代码的元函数时,我似乎遗漏了一些东西。以下代码无法在 inst2 上编译并出现以下错误,但在 inst1 上可以正常工作:
错误 C2903:“应用”:符号既不是类模板也不是函数模板
using namespace boost::mpl;
template <typename VECTOR>
struct first_element : mpl::at_c<VECTOR, 0> {};
int main()
{
typedef vector<
vector<int, int>,
vector<int, int>,
vector<int, int>> lotso;
typedef mpl::transform<lotso,
first_element<_1>>::type inst1;
typedef first_element<
at_c<lotso,0>>::type inst2;
return 0;
}