var s: string; type // Обязательно разделить откуда берутся типы лямбды: // TInput должно браться из шаблона класса (GenericContainer) // TResult - из шаблона метода (TakeLambda) GenericContainer = class // Не обязательно статический метод static procedure TakeLambda(lambda: TInput->TResult); begin lambda(default(TInput)); end; end; procedure PErr; begin // Обязательно в качестве TInput указать не конкретный тип, // а использовать тип из шаблона PErr GenericContainer&.TakeLambda(l-> begin // Обязательно вычислять тип шаблона TakeLambda из тела лямбды // Если вызвать TakeLambda& - не воспроизводится Result := 0; // Обязательно присвоить чему то результат //Ошибка: ToString не объявлен в типе var v := l.ToString; s := v; end); end; begin PErr&; assert(s = '0'); end.