map; map.emplace(1, {1, 1}); return 0;-6ren">
gpt4 book ai didi

c++ - 为什么可变参数函数不能 "eat"C++11 中的列表初始化参数?

转载 作者:IT老高 更新时间:2023-10-28 22:37:07 25 4
gpt4 key购买 nike

示例代码为:

#include <unordered_map>

int main() {
std::unordered_map<int, std::pair<int, int>> map;

map.emplace(1, {1, 1});

return 0;
}

emplace() 有签名的地方,比如:

template <class... _Args>
pair<iterator, bool> emplace(_Args&&... __args);

gcc 表示该函数需要 0 个参数 - 提供 2 个参数。 clang 表示该函数需要 1 个参数 - 提供 2 个参数。

我什至不明白 - 这段代码有什么问题?

最佳答案

问题在于 {1, 1} 不是表达式,也没有类型。由于它没有类型,因此不能推导出到模板参数列表中。它们都不正确,因为问题与提供的参数数量无关。

关于c++ - 为什么可变参数函数不能 "eat"C++11 中的列表初始化参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24229580/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com