级联模板不起作用

时间:2015-10-05 10:06:06

标签: c++ templates

我是c ++元编程的初学者。 现在我测试一本教科书上的代码。 以下代码是代码的副本,但它给我一个错误消息 在第(1)行。在第(1)行,似乎代码尝试使用template关键字调用Layer2 :: function,因为它跟随另一个模板。不幸的是,我的编译器给了我一个错误消息,“错误:预期';'在'::'令牌之前。”。任何人都可以找到代码的问题? 非常感谢你。

template<typename T>
class Layer0 {
public:
    template<int L1>
    class Layer1 {
    public:
        template<int L2>
        class Layer2 {
        public:
            virtual void function(void);
        };
    };
};

template<typename T, int L1>
class LayerTest {
public:
    void pointer (typename Layer0<T>::template Layer1<L1>::template Layer2<L1>* ptr) {
        // At the following line(1), I got an error message, error: expected ‘;’ before ‘::’ token.
        ptr->template Layer2<L1>::function();  // (1) inhibit call of virtual function
    }
};

0 个答案:

没有答案