Один товарищ утверждает, что написал делегат который абстрагируется от сигнатуры функции и способен переварить нормально такой код:
struct SomeStruct
{
operator int() { return 0; }
}
void Caller(Connector con)
{
con( SomeStruct() );
}
void Foo1(int i) {}
void Foo2(SomeStruct ss) {}
Connector con1 = &Foo1;
Caller(con1);
Connector con2 = &Foo2;
Caller(con2);
Тоесть тут не будет у него ни UB ни исключения, а обе Foo получат что хотели. Я тут вижу одну нерешаемую проблему с безвозвратной утерей сигнатуры функции. Соответственно вызов оператора компилятору просто не сгенерироть.
Я чего-то не знаю?