此模板定义在 C++ 中是什么意思?
what does this template definition mean in c++?
我正在阅读一些c ++代码,下面的代码列表让我非常困惑。
我可以猜到它试图定义一个专门的模板,该模板试图使输入参数类型具有特征。但是我有几个问题:
第一个模板看起来既像派生又像模板专用化,如果是派生,结构如何从自身派生? 如果是模板专用化,模板定义在哪里?
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
主模板的定义。请注意,模板的特定专用化派生自该模板的不同专用化(只要没有循环(没有问题。请记住,类模板的每个专用化都是不同的、不相关的类型。
第二个声明只是引入了函数类型的部分专用化,其实例化可能会用作主模板的基类(因为主模板派生自其模板参数为成员函数类型的专用化(。
相关文章:
- 这个语法std::class<>{}(arg1, arg2) 在C++中是什么意思?
- 标准 N3337 5.2.10 第 7 条中的C++"类型"是什么意思?
- "类模板示例<int>;"语句对 C++11 是什么意思?
- 线应该是什么意思
- "CID"在AT+HTTPPARA= "CID" ,1中是什么意思
- 表达式"b=(b-x)&x"是什么意思?
- 这个表达是什么意思?
- 此代码验证公式是什么意思?
- 跟踪日志中的T.11803()是什么意思?
- 这个额外的关键字在这个 c++ 类声明中是什么意思?
- * 和 ** 在 C++ 函数声明中是什么意思?
- _T("xyz")是什么意思?
- #define Dbg(fmt,..) (0) 是什么意思? 警告:表达式无效
- 这行代码到底是什么意思?
- 在命名空间名称之前加上 :: 是什么意思?
- 从字符数组的元素中减去'a'是什么意思
- "friend"关键字在C++中是什么意思?
- 减法中的"0"是什么意思?
- 字符数组前面的加号是什么意思?
- 这里的字符串函数是什么意思