template error instantiating
Maxim Fomin
maxim at maxim-fomin.ru
Sat Nov 17 10:46:31 PST 2012
On Saturday, 17 November 2012 at 18:28:10 UTC, ref2401 wrote:
> I get "template instance main.MyClass!(int) error
> instantiating" in the following case:
>
> public class MyClass(TStuff)
> {
> public void foo(TStuff item)
> {}
>
> public void foo(TRange)(TRange items)
> if (isInputRange!TRange && is(ElementType!TRange == TStuff))
> {}
> }
>
> void main(string[] argv)
> {
> MyClass!int instance = new MyClass!int();
>
> return;
> }
>
> but if i rename one of the "foo" overloads then code will be
> compiled.
Full error message is:
Error: template main.MyClass!(int).MyClass.foo(TRange) if
(isInputRange!(TRange) && is(ElementType!(TRange) == TStuff))
conflicts with function main.MyClass!(int).MyClass.foo at
main.d(3)
main.d(13): Error: template instance main.MyClass!(int) error
instantiating
That's why renaming foo makes dmd happy. Alternatively you can
add extra dummy parenthesis in the first foo to make it template
function. This is not the first case I see adding parenthesis to
function declarations solves compilation errors.
More information about the Digitalmars-d-learn
mailing list