enum A{a};
enum B{b};
class bottom {};

template<typename E> class attr {
public:  E v;
    operator E() { return v;}
    };

template<template<typename> class node, typename attr, typename next>
class       attrNode : public node<attr>, public next {};

template<template<typename> class node>
class list1 : public
    attrNode<node, A,
    attrNode<node, B,
        bottom > > {};

class   foo : public list1<attr> {};

list1<attr> v1;
foo         v2;

template<typename E, template<typename>class node,
    template<template<typename> class> class nodeList >
    node<E>&        att(nodeList<node>& v) { return v; }

int main() {
    A x1 = att<A>(v1);
    B x2 = att<B>(v1);
    A x3 = att<A>(foo);
    }

gets you:
~/ootbc/personal/ivan$ g++ foo.cc
foo.cc: In function ‘int main()’:
foo.cc:31: error: expected primary-expression before ‘)’ token


-- 
           Summary: fails to identify template
           Product: gcc
           Version: 4.3.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: igodard at pacbell dot net


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36961

Reply via email to