vigilDawn 发表于 2022-8-6 13:04:02

C++17模板的新用法,完全看不懂,请大佬帮忙讲解一下

namespace Ubpa::USRefl {
       //
       // attribute for field, class, enum
       //
       // T value (T == void -> no value)
       template<typename Name, typename T>
       struct Attr;

       template<typename Name>
       Attr(Name)->Attr<Name, void>;

       template<typename Name, typename Value>
       Attr(Name, Value)->Attr<Name, Value>;
}

一开始的嵌套命名空间勉强看的懂,下面那个模板结构Attr和下面的两个似乎是构造函数一样的东西就完全看不懂了- -。
求助!

dolly_yos2 发表于 2022-8-6 15:16:04

这个是用户定义的推导指引( Deduction guides ),用来指导(自定义)类的模板参数推导(选择)。
相信您可以找到对应资料,相关内容在标准中包括 和 等。

vigilDawn 发表于 2022-8-6 16:12:44

dolly_yos2 发表于 2022-8-6 15:16
这个是用户定义的推导指引( Deduction guides ),用来指导(自定义)类的模板参数推导(选择)。
相信您 ...

可以仔细说一下,这个struct Attr;这种没有内容的结构体是用来做什么的么,我搜了一下还是没看明白。非常感谢

dolly_yos2 发表于 2022-8-6 18:07:38

vigilDawn 发表于 2022-8-6 16:12
可以仔细说一下,这个struct Attr;这种没有内容的结构体是用来做什么的么,我搜了一下还是没看明白。非常 ...

抱歉那一部分我没看懂意图,去搜索了一下这个库也没找到相关的内容……等等看有没有大佬懂吧

傻眼貓咪 发表于 2022-8-7 14:02:48

本帖最后由 傻眼貓咪 于 2022-8-7 14:18 编辑

.

lhgzbxhz 发表于 2022-8-11 14:06:04

没有内容说明这只是个前置声明,其它地方应该有完整定义,可以找找看。
后面那个用户定义的推导指引,可参考:https://zhuanlan.zhihu.com/p/252392895
https://zh.cppreference.com/w/cpp/language/class_template_argument_deduction
页: [1]
查看完整版本: C++17模板的新用法,完全看不懂,请大佬帮忙讲解一下