当前位置: 首页 > 工具软件 > Overload > 使用案例 >

C++(17):overload模式

谢唯
2023-12-01

C++17提供了overload模式,该模式的写法较为神奇,具体如下:

template<class... Ts> struct overloaded : Ts... { using Ts::operator()...; };
template<class... Ts> overloaded(Ts...) -> overloaded<Ts...>;

template<class... Ts> struct overloaded : Ts... { using Ts::operator()...; };
这是一个类模板的声明。

其中:
template<class... Ts>:overloaded 

表示类的模板参数为可变长的参数包 Ts。
假设 Ts 包含 T1, T2, … , TN,那么这一句声明可以展开为:template<class T1, class T2, ..., class TN>


struct overloaded : Ts...:overloaded

表示类的基类为参数包 Ts 内所有的参数类型。
假设 Ts 包含 T1, T2, … , TN,那么这一句声明可以展开为:struct overloaded : T1,

 类似资料: