繁体   English   中英

使用模板template参数专门化基类

[英]Specialize base class with template template parameter

我将头顶在下面的代码上:

template<class... Ts> struct typelist{};

template<class S> struct Fun;

template<template<class...> class S, class... Ts>
struct Fun<S<Ts...>> {
    std::tuple<Ts...> _fun;
};

template<class S, class P> struct Gun;

template<template<class...> class S, class... Ts, class P>
struct Gun<S<Ts...>, P>: Fun<S<Ts...>>{
    auto hun(){
        std::cout << std::get<0>(_fun); // error: use of undeclared identifier '_fun'
    }
};

auto main(int /*argc*/, char* /*argv*/[])-> int {
    auto gun = Gun<typelist<int>, float>{};
    gun.hun();
    return 0;
}

我不知道这里发生了什么以及为什么我得到了这个错误。 一定有明显的我看不到...

请注意,基类依赖于模板参数,而_fun是一个非依赖名称,不会在依赖基类中查找。

您可以使名称_fun依赖,然后在实例化时将其查询; 那时,确切的基础专业知识是已知的。

例如

std::cout << std::get<0>(this->_fun);
//                       ~~~~~~
std::cout << std::get<0>(Fun<S<Ts...>>::_fun);
//                       ~~~~~~~~~~~~~~~

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM