Co-6ren">
gpt4 book ai didi

c++ - Clion 的 "Call to std::pair is ambiguous"但可以编译代码

转载 作者:可可西里 更新时间:2023-11-01 10:32:35 25 4
gpt4 key购买 nike

我有一个函数可以在这种状态下编译,但给出“配对调用不明确”,但仅在 Clion IDE 中,编译没有问题,如果我添加任何随机的东西,警告就会消失,即使它最终导致编译器错误。

std::pair<Status, std::set<std::string>> Config::foo(const std::string &sec, const std::string &key) const {

return std::pair<Status, std::set<std::string>>(
hasSection(sec) ? (hasKey(sec, key) ? Status::Success
: Status::MissingKey)
: Status::MissingSec ,
hasKey(sec, key) ? config_map.find(sec)->second.find(key)->second
: std::set<std::string>()
);
}

我不知道如何解决它,甚至不知道问题到底是什么。

最佳答案

如果你想构造一个 pair 对象,你必须使用 std::make_pair 函数模板。

template <class T1, class T2>
pair<V1,V2> make_pair (T1&& x, T2&& y);

模板类型可以从传递给 make_pair 的参数中隐式推导出来。

 return std::make_pair(
hasSection(sec) ? (hasKey(sec, key) ? Status::Success
: Status::MissingKey)
: Status::MissingSec ,
hasKey(sec, key) ? config_map.find(sec)->second.find(key)->second :
std::set<std::string>()
);

此代码编译时没有“对配对的调用不明确”。

如果指定 make_pair 模板类型,会遇到“表达式必须是右值”类型的错误。

关于c++ - Clion 的 "Call to std::pair is ambiguous"但可以编译代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47065971/

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