我有这个用法,bind1st但我将我的项目升级到C++ 17,因为bind1st已删除.
如何bind1st在以下声明中替换?LAMBDA?
DBManager::Instance().FuncQuery(std::bind1st(std::mem_fn(&CGuild::LoadGuildData), this), "SELECT master, level, exp, name, skill_point, skill, sp, ladder_point, win, draw, loss, gold FROM guild WHERE id = %u", m_data.guild_id);
Run Code Online (Sandbox Code Playgroud)
只需使用std :: bind:
std::bind(std::mem_fn(&CGuild::LoadGuildData), this, std::placeholders::_1)
Run Code Online (Sandbox Code Playgroud)
您也可以删除多余的内容std::mem_fn:
std::bind(&CGuild::LoadGuildData, this, std::placeholders::_1)
Run Code Online (Sandbox Code Playgroud)
使用lambda,您可以替换
std::bind1st(std::mem_fn(&CGuild::LoadGuildData), this)
Run Code Online (Sandbox Code Playgroud)
通过
[this](auto&& data) {return this->LoadGuildData(data);}
Run Code Online (Sandbox Code Playgroud)
最后给出了类似的东西:
DBManager::Instance().FuncQuery(
[this](auto&& data) {return this->LoadGuildData(data);},
"SELECT master, level, exp, name, skill_point, skill, sp, "
"ladder_point, win, draw, loss, gold FROM guild WHERE id = %u",
m_data.guild_id);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
970 次 |
| 最近记录: |