我试图让CTAD与std::map
一起使用,但是我无法使其工作。
#include<iostream>
#include<string>
#include<map>
#include<vector>
using namespace std;
using namespace std::string_literals;
int main() {
std::vector v{1,2,3}; // ok
std::map m{{4, "four"s},{7,"seven"s},{1,"one"s},{5,"five"s}}; // error
}
是否有使其工作的方法,或者std::map
要使其工作复杂吗?
答案 0 :(得分:4)
问题在于此std::map m{{4, "four"s},{7,"seven"s},{1,"one"s},{5,"five"s}}; // error
是{}
中的{}
,而CTAD却不这样做。
如果您执行std::map m{std::pair{4, "four"s},{7,"seven"s},{1,"one"s},{5,"five"s}};
,它将成为CTAD起作用的初始化列表。