2

以下のような 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)
{
 ...

}

空欄を埋めるのを手伝ってくれませんか?

4

1 に答える 1