gpt4 book ai didi

c++ - 有人可以解释这个模板函数声明语法吗

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:03:13 25 4
gpt4 key购买 nike

我不理解 boost::python 库中的以下模板声明(准确地说是 .../boost_1_51/boost/python/detail/msvc_typeinfo.hpp 的第 47 行):

template< typename T > T&(* is_ref_tester1(type<T>) )(type<T>) { return 0; }

哪里typetemplate <class T> struct type {};

它似乎在功能上等同于:

template<typename T>
struct func_type_getter {
typedef T&(*func_type)(type<T>);
};


template< typename T >
typename func_type_getter<T>::func_type is_ref_tester1(type<T>) { return 0; }

这些是等价的吗,只是简写,还是有人能解释一下区别?

最佳答案

是的,两者是等价的。这是单行代码的阅读方式:

template< typename T > T&(* is_ref_tester1(type<T>) )(type<T>) { return 0; }
^ ^ ^ ^
| | | |
| | | 3. it's return type is a pointer to a function taking a type<T>
| | |
| | 2. it's a function taking a type<T>
| |
| 1. this is the declared identifier
|
4. this is the return type of the function whose pointer is returned

关于c++ - 有人可以解释这个模板函数声明语法吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18616817/

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