On Monday, 11 January 2021 at 16:40:01 UTC, Jack wrote:
let's say a I have this:

void f(X foo) { }

but I'd like to make f() accept immutable X too so instead of cast away everywhere in the code where immutable(X) is passed to f() or make a overload for this, are there any way to accept both in same function? those function are callback-like functions, I have lots of them so already and would need to double, if I do add an overload just for the immutable. I did come up with something using templates, not sure if it's ugly:

void f(T)(T x)
if(is(T == C) || is(T == immutable(C)) {
// ...
}

Accepting both mutable and immutable is what `const` is for:

void f(const X foo) { ... }

Reply via email to