On 12/06/2018 02:50 PM, albertas-jn wrote:
If templates are a compile-time feature and instances of templates are generated by compiler at compile time, why is it possible to compile a template definition with dmd -lib or -c?
There is no trace of the template in the library or the object file. You can investigate the compiled symbols with e.g. the 'nm' tool on Linux systems:
// deneme.d: void foo(T)(T t) { import std.stdio; writeln(t); } void main() { // foo(42); } $ dmd deneme.d -lib $ nm deneme.a | grep foo No trace of foo... Now uncomment the line in main and repeat: $ dmd deneme.d -lib $ nm deneme.a | grep foo U _D6deneme__T3fooTiZQhFNfiZv 0000000000000000 W _D6deneme__T3fooTiZQhFNfiZv "W" indicates a definition. Ali