MatchEventInMemberFunction
C++ Build Insights SDK は、Visual Studio 2017 以降と互換性があります。 これらのバージョンのドキュメントを表示するには、この記事の Visual Studio バージョン セレクター コントロールを Visual Studio 2017 以降に設定します。 このページの目次の一番上にあります。
MatchEventInMemberFunction
関数は、メンバー関数の最初のパラメーターで記述される型に対してイベントを照合するために使用されます。 一致したイベントは、後続の処理のためにそのメンバー関数に転送されます。
構文
template <
typename TInterface,
typename TReturn,
typename TEvent,
typename... TExtraParams,
typename... TExtraArgs>
bool MatchEventInMemberFunction(
const RawEvent& event,
TInterface* objectPtr,
TReturn (TInterface::* memberFunc)(TEvent, TExtraParams...),
TExtraArgs&&... extraArgs);
パラメーター
TInterface
メンバー関数を含む型。
TReturn
メンバー関数の戻り値の型。
TEvent
照合するイベントの型。
TExtraParams
メンバー関数によって受け入れられる追加パラメーターの型、および照合するイベントの型。
TExtraArgs
MatchEventInMemberFunction
に渡された追加の引数の型。
event
TEvent によって記述されるイベントの型と照合するイベント。
objectPtr
memberFunc が呼び出されるオブジェクトへのポインター。
memberFunc
照合するイベント型が記述されているメンバー関数。
extraArgs
イベント型のパラメーターと共に memberFunc に完全に転送される引数。
戻り値
正常に一致した場合は true
であり、それ以外の場合は false
である bool
値。
解説
TEvent パラメーターに使用するイベントの型は、"キャプチャ クラス" のリストから選択できます。 照合に使用できるイベントのリストとキャプチャ クラスについては、イベント テーブルに関する記事を参照してください。
例
void MyClass::Foo1(Function f) {}
void MyClass::Foo2(Compiler cl) {}
void MyClass::OnStartActivity(const EventStack& eventStack)
{
// Let's assume eventStack contains:
// [Compiler, BackEndPass, C2DLL, CodeGeneration, Thread, Function]
auto& functionEvent = eventStack.Back(); // The Function event
bool b1 = MatchEventInMemberFunction(
functionEvent, this, &MyClass::Foo1);
bool b2 = MatchEventInMemberFunction(
functionEvent, this, &MyClass::Foo2);
// b1: true because the first parameter of Foo1 is Function.
// b2: false because the first parameter of Foo2 isn't Function.
}