C ++(gcc)嵌套模板问题?

时间:2013-05-07 20:24:15

标签: c++ templates

我有以下简化,这有效:

// works:
template<typename NodeStructure>
struct ListNode {
    NodeStructure *prev, *next;
};

template<typename NodeStructure, ListNode<NodeStructure> NodeStructure::*node>
struct ListBase {
    NodeStructure *head, *tail;
};

struct N {
    ListNode<N> node;
};

struct B {
    ListBase<N, &N::node> base;
};

但这不起作用

template<typename NodeStructure>
struct List {

    struct Node {
        NodeStructure *prev, *next;
    };

    template<Node NodeStructure::*node>
    struct Base {
        NodeStructure *head, *tail;
    };

};

struct N {
    List<N>::Node node;
};

struct B {
    List<N>::Base<&N::node> base; // ERROR: Invalid template argument, ¿why?
};

在实际代码中,List模板接收更多模板参数并定义了一个额外的类Iterator,问题是¿为什么不工作,我做错了什么?


OH NO是IDE问题!!

扫描嵌套模板参数时,

Eclipse CDT /代码分析误报。

感谢您的回答。

1 个答案:

答案 0 :(得分:1)

eclipse CDT在检测到代码分析错误时打破了建筑物。 解决方案:代码分析无效模板参数已被禁用并报告错误

https://bugs.eclipse.org/bugs/show_bug.cgi?id=407497