Thread overview
Getting usages of template
Nov 17, 2016
Carlin St Pierre
Nov 17, 2016
Stefan Koch
Nov 18, 2016
lobo
November 17, 2016
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
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
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__);
  }
}