digitalmars.D - misoverloading
- Gor Gyolchanyan (36/36) Dec 05 2012 There's a curiously misleading behavior when overloading on the same
- Timon Gehr (4/40) Dec 05 2012 DMD does not check overloads at all. If you do not call the function,
There's a curiously misleading behavior when overloading on the same
underlying types:
struct Test
{
void* ptr;
uint num;
}
alias const(Test) A;
void foo(A)
{
import std.stdio;
writeln("mutable");
}
void foo(const(A))
{
import std.stdio;
writeln("const");
}
unittest
{
foo(A());
}
DMD outputs the following error:
C:\Users\g.gyolchanyan\Desktop\test.d(67): Error: function test.foo called
with argument types:
((const(Test)))
matches both:
C:\Users\g.gyolchanyan\Desktop\test.d(53): test.foo(const(Test) _param_0)
and:
C:\Users\g.gyolchanyan\Desktop\test.d(59): test.foo(const(Test) _param_0)
The error should be about redefinition of foo(), since A and const(A) are
the exact same type.
Is this a bug or am I mistaken on the expected behavior?
-- 
Bye,
Gor Gyolchanyan.
 Dec 05 2012
On 12/05/2012 01:20 PM, Gor Gyolchanyan wrote:
 There's a curiously misleading behavior when overloading on the same
 underlying types:
 struct Test
 {
     void* ptr;
     uint num;
 }
 alias const(Test) A;
 void foo(A)
 {
     import std.stdio;
     writeln("mutable");
 }
 void foo(const(A))
 {
     import std.stdio;
     writeln("const");
 }
 unittest
 {
     foo(A());
 }
 DMD outputs the following error:
 C:\Users\g.gyolchanyan\Desktop\test.d(67): Error: function test.foo
 called with argument types:
 ((const(Test)))
 matches both:
 C:\Users\g.gyolchanyan\Desktop\test.d(53): test.foo(const(Test) _param_0)
 and:
 C:\Users\g.gyolchanyan\Desktop\test.d(59): test.foo(const(Test) _param_0)
 The error should be about redefinition of foo(), since A and const(A)
 are the exact same type.
 Is this a bug or am I mistaken on the expected behavior?
 --
 Bye,
 Gor Gyolchanyan.
DMD does not check overloads at all. If you do not call the function, 
the multiple definition error is caught in the linker. I think there are 
already reports for this.
 Dec 05 2012








 
  
  
  Timon Gehr <timon.gehr gmx.ch>
 Timon Gehr <timon.gehr gmx.ch>