提取模板参数的值

时间:2018-01-18 16:43:07

标签: c++ templates

我有这堂课:

#include <iostream>

template<typename T, typename... TT>
class List
{
public:
    typedef T head;
    typedef List<TT...> next;
    enum { size = sizeof...(TT)+1 };
};

和这个主要:

#include <iostream>
#include "List.h"
using namespace std;

template <int T>
struct Int {
    enum { value = T };
};

int main() {
    typedef List<Int<1>, Int<2>, Int<3>> list;
    cout << list::template head.value << endl; // Error
    cout << list::size; // Works
    return 0;
}

错误讯息:

error: expected primary-expression before '.' token
     cout << list::template head.value << endl;

我会感激任何帮助..过去半小时我一直试图解决这个问题,这可能是非常愚蠢的事情,我无法指责。

1 个答案:

答案 0 :(得分:4)

template是一种类型。这意味着您无法使用.消除歧义,也无法使用std::cout << list::head::value << std::endl; 访问它。没有太多办法解决它:

using namespace std;

另外,请摆脱{{1}}。