| 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
Permalink
Reply