C++ 模板与内存所有权:深入解析
1. 类和函数模板
在 C++ 中,模板是一种强大的工具,它允许我们编写通用的代码。这里介绍一种新的 overload 模板,它可以用来初始化 overload_set 对象的所有基对象(lambda 表达式是可移动的)。这种模板无需递归或部分特化,更加紧凑和直接。
// Example 12c
template <typename ... F>
struct overload : public F ... {
using F::operator() ...;
};
template <typename ... F> // Deduction guide
overload(F&& ... ) -> overload<F ...>;
下面是使用示例:
int i = 5;
double d = 7.3;
auto l = overload{
[](int* i) { std::cout << "i=" << *i << std::endl; },
[](double* d) { std::cout << "d=" << *d << std::endl; },
};
l(&i); // i=5
l(&d); // d=7.3
超级会员免费看
订阅专栏 解锁全文
1130

被折叠的 条评论
为什么被折叠?



