You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

除lambda和static_cast外,如何更简便指定重载函数的目标定义?

如何更简便地将重载函数绑定到std::function?

假设有以下两个重载函数:

int function_name(std::string);
int function_name(std::string, std::string);

当尝试将其中一个重载版本作为struct成员初始化时:

struct My_struct
{
   std::function<int(std::string)> function_name;
};

// ...

My_struct function_struct = { function_name };

编译器会报错,因为无法确定要选用哪个重载版本。

已知的两种解决方法

  • 使用static_cast转换为函数指针:

    static_cast<int(*)(std::string)>(function_name);
    

    用这个转换后的表达式替代初始化列表里的function_name,即可明确指定目标重载版本。

  • 使用lambda表达式包裹:

    My_struct function_struct = { [](std::string my_string) { return function_name(my_string); } };
    

    通过lambda的参数列表匹配目标重载,让编译器自动推导选择对应的函数版本。

疑问

以上两种方法都能解决问题,但有没有更优或更简便的实现方式?


内容的提问来源于stack exchange,提问作者cam.b

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 18:32:38