"The call is ambiguous between the following methods or properties: 'fInt.fInt(int, bool)' and 'fInt.fInt(long, bool)'"

Here are my two constructors:

public fInt(int i, bool scale = true) { if (scale) value = i * SCALE; else value = i; } public fInt(long i, bool scale = true) { if (scale) { if(i > long.MaxValue / SCALE || i < long.MinValue / SCALE) Debug.LogError("fInt Overflow on creation with scaling"); value = i * SCALE; } else value = i; }

Here's how I'm calling one with int using implicit conversion:

fInt i = 8;

I would like to be able to use both int and long so that I may avoid an extra check if it's not needed. Any thoughts on how to fix this? Would I simply have to do this:

fInt i = (int)8; fInt i2 = (long)9;

I'd rather not have the extra typing if I can avoid it. Here are my implicit conversions: