22 lines
593 B
ObjectPascal
22 lines
593 B
ObjectPascal
type
|
||
TBase = class end;
|
||
|
||
TErr<T> = class(TBase)
|
||
|
||
public static function operator implicit(o: T): TErr<T>;
|
||
begin
|
||
raise new System.InvalidOperationException;
|
||
end;
|
||
|
||
end;
|
||
|
||
procedure p0<T>(o: TErr<T>) := exit;
|
||
|
||
// обязательно вызывать p0 с шаблонным параметром p1
|
||
// если вызывать p0&<word> - выводит правильное сообщение об ошибке
|
||
procedure p1<T>(q: TBase) := p0&<T>(q); // это не должно компилироваться
|
||
|
||
begin
|
||
var q: TBase;
|
||
p1&<byte>(q);
|
||
end. |