Работает ли вывод аргументов шаблона класса с std :: map? - PullRequest
3 голосов
/ 13 мая 2019

Я пытался заставить 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 сложно дляэто работать?

1 Ответ

4 голосов
/ 13 мая 2019

Проблема в том, что это 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работает на.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...