gpt4 book ai didi

c++ - 我如何将 std::get 作为参数传递给模板函数?

转载 作者:行者123 更新时间:2023-11-27 23:01:12 25 4
gpt4 key购买 nike

我想做的是:

template <typename KeyType, typename Getter>
void one_function(KeyType& input,
Getter getter)
{
std::cout << "inside one function " << getter(input) << std::endl;
}


int main(int argc, const char * argv[]) {
auto aMap = std::unordered_map<std::string, std::pair<std::string, std::string> > { {"key1",{"value1_1","value1_2"} }, {"key2",{"value2_1","value2_2"}}};

auto value_1_2 = one_function(aMap["key1"], std::get<1>);
}

我想通过std::get<1>到提取元组/对的第二个元素的函数。我知道如何使用 lambda 执行此操作,但我很好奇如何使用 std::get .注意:通过使用我自己的 get函数我可以将它传递给one_function但我不知道如何通过标准库版本

最佳答案

get 有很多重载,所以你必须指定正确的一个:

one_function(aMap["key1"],
static_cast<std::string&(*)(std::pair<std::string, std::string>&)>(&std::get<1>));

在 C++14 中使用 lambda 更具可读性:

one_function(aMap["key1"], [](auto& p){ return std::get<1>(p); });

Live example

关于c++ - 我如何将 std::get 作为参数传递给模板函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27479253/

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