繁体   English   中英

这个模板定义在c ++中意味着什么?

[英]what does this template definition mean in c++?

我正在阅读一些c ++代码,下面的代码列表让我很困惑。
我猜它会尝试定义一个专门的模板,它试图对输入的args类型进行特征化。 但我有几个问题:
第一个模板看起来像派生和模板特化,如果它是派生的,结构如何从自身派生? 如果是模板专业化,那么模板定义在哪里?

template<typename F>
struct function_traits : public function_traits<decltype(&F::operator())>
{};

template<typename R, typename C, typename ... Args>
struct function_traits<R(C::*)(Args...) const> {
    template<size_t i>
    struct arg
    {
        using type = typename std::tuple_element<i, std::tuple<Args...>>::type;
    };
};

第一个声明只是struct function_traits的主要模板的定义。 请注意,从该模板的不同专业化派生的模板的特定专业化没有问题(只要没有循环)。 请记住,类模板的每个特化都是一个独特的,不相关的类型。

第二个声明简单地引入了函数类型的部分特化,其实例化可能会被用作主模板的基类(因为主模板派生自模板参数为成员函数类型的特化)。

暂无
暂无

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

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