Local templates and alias parameters

2013-06-28 Thread John Colvin

void main()
{
template A(alias a)
{
enum A = a.stringof;
}
int b;
	string s = A!b;   // Error: template instance A!(b) cannot use 
local 'b' as parameter to non-global template A(alias a)

}

Bug or feature?


Re: Local templates and alias parameters

2013-06-28 Thread Ali Çehreli

On 06/28/2013 01:04 PM, John Colvin wrote:

void main()
{
 template A(alias a)
 {
 enum A = a.stringof;
 }
 int b;
 string s = A!b;   // Error: template instance A!(b) cannot use
local 'b' as parameter to non-global template A(alias a)
}

Bug or feature?


Popular limitation: :)

  http://d.puremagic.com/issues/show_bug.cgi?id=5710

Ali



Re: Local templates and alias parameters

2013-06-28 Thread John Colvin

On Friday, 28 June 2013 at 23:57:30 UTC, Ali Çehreli wrote:

On 06/28/2013 01:04 PM, John Colvin wrote:

void main()
{
template A(alias a)
{
enum A = a.stringof;
}
int b;
string s = A!b;   // Error: template instance A!(b) cannot 
use

local 'b' as parameter to non-global template A(alias a)
}

Bug or feature?


Popular limitation: :)

  http://d.puremagic.com/issues/show_bug.cgi?id=5710

Ali


I get that it's a problem when they are in entirely 
non-overlapping scopes, but when they are in the same local scope 
it really shouldn't be an error as there's no need for the double 
context pointer. Indeed, in this case there's no need for any 
context pointer at all, it's a purely compile-time manipulation.


I'm tempted to create a separate bug report for this as it's not 
quite the same problem.