以下のような 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++ は、同じ署名のインラインおよびアウトライン C++ ラムダと同様に、std::function を取得できる必要があります。
C++ std::function とラムダのオーバーロードに関する多くの 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)
{
...
}
空欄を埋めるのを手伝ってくれませんか?