我正在尝试将下面的 C# 代码转换为 C++:
void SomeCall(Action action)
{
// do things like action();
}
void SomeCall(Action<Action> action)
{
// define some action1
// do things like action(action1);
}
SomeCall 的 C++ 等效项应该能够采用 std::function 以及具有相同签名的内联和轮廓 C++ lambda。
在浏览了许多关于 C++ std::function 和 lambdas 重载的 SO 问题之后,答案似乎应该如下所示:
template<typename Func>
enable_if<Func is something callable>
void SomeCall(Func&& action)
{
...
}
template<typename Func>
enable_if<Func is something callable taking another callable as the parameter>
void SomeCall(Func&& action)
{
...
}
你能帮我填空吗?