[fpc-pascal] Generics: constructor restriction fail

silvioprog silvioprog at gmail.com
Fri Oct 31 00:04:24 CET 2014


Hello,

Following this article:

http://alex.ciobanu.org/?p=51

The compiler does not check the constructor restriction.

Try this test:

{$mode delphi}

  TTest = class
  private // hidding the constructor to cause a compiler error
    constructor Create;
  end;

  TGen<T: class, constructor> = class
  end;

constructor TTest.Create;
begin
end;

var  Gen: TGen<TTest>;
begin
  Gen := TGen<TTest>.Create;
end;

It compiles well in FPC (from trunk), but the same code in XE is:

"[dcc32 Error] Unit1.pas(36): E2513 Type parameter 'T' must have one public
parameterless constructor named Create"

It is a bug in FPC or I need to enable some directive switch?

Thank you!

-- 
Silvio Clécio
My public projects - github.com/silvioprog
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freepascal.org/pipermail/fpc-pascal/attachments/20141030/c6539756/attachment.html>


More information about the fpc-pascal mailing list