我有一个用于学习目的的类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
是否被视为聚合?