c++ - 为什么 CTAD 不适用于结构内的模板化数据成员
问题描述
我有一个用于学习目的的类pair_wrapper
模板:std::pair
template <typename F, typename S>
struct pair_wrapper {
std::pair<F, S> member_pair;
};
其中:
pair_wrapper{{1, 2.0}}; // does not work
pair_wrapper<int, double>{{1, 2.0}}; // but does work
或者强迫我这样做:
pair_wrapper{std::pair{1, 2.0}}; // but this also works
或者使用自定义推导指南创建自定义构造函数:
...
template <typename T, typename U>
pair_wrapper(T&& t, U&& u)
: p{std::forward<T>(t), std::forward<U>(t)} {}
...
template <typename F, typename S>
pair_wrapper(F, S) -> pair_wrapper<F, S>;
去做:
pair_wrapper{1, 2.0};
我的问题是:为什么我不能直接推断出数据成员的模板参数,例如pair_wrapper{{1, 2.0}}
该类型pair_wrapper
是否被视为聚合?
解决方案
推荐阅读
- python - 在循环中多次过滤熊猫数据帧的最快方法
- hibernate - 使用 @Convert 在字段上创建路径时引发 IllegalArgumentException
- excel - 将 INDIRECT 与数组输入一起使用
- powershell - 调用 RESTMethod 错误“request_data 必须是类型:dict”
- matlab - 在并行模式下运行测试时,如何解决冲突的 simulink 仿真加速工件问题?
- angular - 如何使用 Mozilla Firefox 处理屏幕旋转问题
- node.js - 猫鼬 - 按与日期无关的创建时间查找
- c# - 如何使用户内容对另一个用户控件 WPF 隐藏?
- python - 解决“ModuleNotFoundError: ...'__main__' 不是包”错误
- sql-server - 在意外终止的代理中运行时,将 XLSX 加载到 SQL 的 SSIS 包失败