On Wednesday, 10 December 2014 at 12:24:56 UTC, Tobias Pankrath
wrote:
On Wednesday, 10 December 2014 at 10:24:53 UTC, Paulo Pinto
wrote:
On Wednesday, 10 December 2014 at 08:43:49 UTC, Kagamin wrote:
On Tuesday, 9 December 2014 at 20:55:51 UTC, Dicebot wrote:
Because you don't really create a template that way but
workaround broken function behavior. It is not the usage of
empty templates that is bad but the fact that plain
functions remain broken => not really a solution.
You can compile against phobos sources instead of interface
files.
This cannot be the solution if D aspires to be used in
contexts where binary libraries are used.
C++ is excused to have template code in headers given the
primitive tooling, but languages like Ada and Modula-3 support
proper information hiding for generic code.
--
Paulo
A binary blob requirement makes no sense for a standard library.
And yet that has been the way it always worked in the Mesa linage
of languages.
Mesa, Modula-2, Modula-3, Ada, Oberon, Object Pascal ....
Would you like to explain how the proper information hiding
support works for generic code in Ada? I'm really curious how
that could work in D.
The libraries contain the required metadata for symbol tables and
code locations that need to be extracted into the
executable/library.
Package definition files contain the minimum information the
compiler needs to know to search for the remaining information.
Example,
-- Package header
generic
type Element_T is private;
package functions is
procedure Swap (X, Y : in out Element_T);
end functions;
-- Package body
package body functions is
procedure Swap (X, Y : in out Element_T) is
begin
-- implementation
end Swap;
end functions;
-- importing it
declare
package functions_Int is new functions (Int);
use functions_Int;
x, y : Int;
begin
x := 1;
y := 2;
Swap(x, y);
end;
Lots of options are possible when the C compiler and linker model
aren't being used.
..
Paulo