基本的に、私が達成したいのは、登録された callable (関数、ラムダ、call 演算子を含む構造体) が正しい署名を持っていることをコンパイル時に検証することです (エラー メッセージが表示される可能性があります)。記入例(static_assert
記入欄の内容):
struct A {
using Signature = void(int, double);
template <typename Callable>
void Register(Callable &&callable) {
static_assert(/* ... */);
callback = callable;
}
std::function<Signature> callback;
};