gpt4 book ai didi

c++ - 没有类型名的模板参数

转载 作者:行者123 更新时间:2023-11-30 03:33:20 26 4
gpt4 key购买 nike

我正在阅读 the following question and its associated accepted answer在 SO 上,我想知道 struct C 的第二个模板参数的含义是什么(没有 typename 关键字的那个)。

代码如下:

template<typename T, T> struct C; // Here.

template<typename T, typename R, typename ...Args, R (T::*F)(Args...)>
struct C<R (T::*)(Args...), F>
{
R operator()(T &obj, Args&&... args)
{
return (obj.*F)(std::forward<Args>(args)...);
}
};

我知道代码在做什么,但我不明白第二个 T 的用途的 template<typename T, T> struct C;没有typename的声明及其含义关键字。

有人能告诉我它的意思吗?感谢您的回答。

最佳答案

模板值参数。

template<typename T, T> struct C;

意味着你定义了类型T,然后也将类型T的值传递给模板。在 SO 问题的示例中,类型是函数指针类型,然后第二个 T 的值是指向匹配类型函数的实际指针。

关于c++ - 没有类型名的模板参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43030939/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com