On Saturday, 6 April 2019 at 17:30:45 UTC, Mek101 wrote:
I'm rewriting from C# a small library of mine to practice with D.
I have a class:


 class WeightedRandom(T, W = float) if(isNumeric!W)
 {
         // Fields
         private W[T] _pairs;
         // The total sum of all the weights;
         private W _probabilities;

         /// Code...
 }


And when I try to instantiate an object in a unittest


 unittest
 {
         auto wrnd = new WeightedRandom!char();
         wrnd.normalizeAt(120.55);
 }


Compilation fails with the following error:


source/utils/weightedRandom.d(25,18): Error: cannot pass type char as a function argument source/utils/weightedRandom.d(90,18): Error: template instance `utils.weightedrandom.WeightedRandom!(char, float)` error instantiating
 /usr/bin/dmd failed with exit code 1.


Same exact error with:
   WeightedRandom!(char)();
   WeightedRandom!(string, float)();


It seems like dmd thinks I'm calling a function while I'm trying to instantiate the object.

Hmm,

import std.traits;
class WeightedRandom(T, W = float) if(isNumeric!W)
 {
         // Fields
         private W[T] _pairs;
         // The total sum of all the weights;
         private W _probabilities;

         /// Code...
 }

void main()
{
    auto wrnd = new WeightedRandom!char();
}

works for me: https://run.dlang.io/is/CjSubj

Reply via email to