【发布时间】:2018-11-26 14:20:47
【问题描述】:
为什么make_pair 和类模板参数推导 (CTAD) 在生成哪种类型上不一致?
#include <iostream>
#include <functional>
#include <utility>
#include <typeinfo>
int main() {
int myInt = 5;
std::reference_wrapper<int> myIntRef = myInt;
auto myPair = std::make_pair(myInt, myIntRef);
std::pair My2ndPair(myInt, myIntRef);
std::cout << typeid(myPair).name() << '\n';
std::cout << typeid(My2ndPair).name() << '\n';
}
输出:
St4pairIiRiE // std::pair<int, int&>
St4pairIiSt17reference_wrapperIiEE // std::pair<int, std::reference_wrapper<int> >
更新:
为什么std::pair 的扣减指南不包括std::reference_wrapper 的指南,比如make_pair 有过载?
【问题讨论】:
标签: c++ templates c++17 template-argument-deduction