On Wed, Apr 15, 2020 at 09:46:58PM +0000, p.shkadzko via Digitalmars-d-learn wrote: > I am quite confused by the following exception during dub build: > > > dub build --single demo.d --compiler=ldc2 --force > Performing "debug" build using ldc2 for x86_64. > demo ~master: building configuration "application"... > demo.d(221,20): Error: template object.get cannot deduce function from > argument types !()(double[string], string, string), candidates are: > C:\ldc2-1.20.0-windows-x64\bin\..\import\object.d(2645,10): get(K, > V)(inout(V[K]) aa, K key, lazy inout(V) defaultValue) > C:\ldc2-1.20.0-windows-x64\bin\..\import\object.d(2652,10): get(K, > V)(inout(V[K])* aa, K key, lazy inout(V) defaultValue) > > The code that causes it: > > """ > void main(string[] args) { > > double[string] scores = calculateScores("test.txt"); > double score = scores.get("hello", 0.0); // <-- exception > } > """ > > It works if I just do "double score = scores["hello"];" > Both dmd and ldc2 throw this exception. > Is it a bug?
Are you sure the error is on the line you indicated? The error message claims that your argument types are (double[string], string, string), but your code clearly has argument types (double[sting], string, double). Are you sure dub is compiling the source file(s) you think it's compiling? Which source file(s) are shown by `dub -v`? T -- Leather is waterproof. Ever see a cow with an umbrella?