Easy way to accept X and immutable X in parameters without overloading?
    ag0aep6g 
    anonymous at example.com
       
    Mon Jan 11 19:28:56 UTC 2021
    
    
  
On Monday, 11 January 2021 at 18:51:04 UTC, Jack wrote:
> Here's what I'm trying to make to work:
>
> import std.container : SList;
>
> class C
> {
>     static immutable Foo = new C();
>    // ....
> }
>
> alias Callback = void function(const C, int);
>
> void main()
> {
>     auto l = SList!Callback();
>     auto a = (C c, int d) { };
>     auto b = (C c, int d) { };
>     auto c = (const C c, int d) { };
>     l.insert(a);
>     l.insert(b);
>     l.insert(c);
> }
I'm assuming that you then want to call the callbacks on mutable 
and immutable `C`s like `C.Foo`.
You have to add `const` to the `a` and `b` functions, too:
     auto a = (const C c, int d) { };
     auto b = (const C c, int d) { };
Without those `const`s, you have callbacks with mutable 
parameters being called on an immutable object. That cannot work.
    
    
More information about the Digitalmars-d-learn
mailing list