Thread overview | |||||
---|---|---|---|---|---|
|
November 17, 2016 Getting usages of template | ||||
---|---|---|---|---|
| ||||
Is it possible to get the list of usages of a template during compile time? For example: class Foo { void bar(T)(T t) { } } void main() { Foo foo = new Foo; foo.bar(1); // int foo.bar(2f); // float foo.bar("3"); // string } // pragma(msg, TemplateThatGetsTemplateUsages!(Foo.bar)) would print: // (int, float, string) |
November 17, 2016 Re: Getting usages of template | ||||
---|---|---|---|---|
| ||||
Posted in reply to Carlin St Pierre | On Thursday, 17 November 2016 at 09:40:45 UTC, Carlin St Pierre wrote:
> Is it possible to get the list of usages of a template during compile time?
>
> For example:
>
> class Foo
> {
> void bar(T)(T t)
> {
>
> }
> }
>
> void main()
> {
> Foo foo = new Foo;
> foo.bar(1); // int
> foo.bar(2f); // float
> foo.bar("3"); // string
> }
>
> // pragma(msg, TemplateThatGetsTemplateUsages!(Foo.bar)) would print:
> // (int, float, string)
Not without hacking the compiler.
|
November 18, 2016 Re: Getting usages of template | ||||
---|---|---|---|---|
| ||||
Posted in reply to Carlin St Pierre | On Thursday, 17 November 2016 at 09:40:45 UTC, Carlin St Pierre wrote:
> Is it possible to get the list of usages of a template during compile time?
>
> For example:
>
> class Foo
> {
> void bar(T)(T t)
> {
>
> }
> }
>
> void main()
> {
> Foo foo = new Foo;
> foo.bar(1); // int
> foo.bar(2f); // float
> foo.bar("3"); // string
> }
>
> // pragma(msg, TemplateThatGetsTemplateUsages!(Foo.bar)) would print:
> // (int, float, string)
Does this do what you want?
class Foo {
void bar(T)(T t) {
pragma(msg, __FUNCTION__);
}
}
|
Copyright © 1999-2021 by the D Language Foundation