On 7/23/2011 7:49 PM, bearophile wrote:
Tyro[a.c.edwards]:

[3] imagelist.d(22): Error: class
dfl.imagelist.ImageList.ImageCollection use of
dfl.imagelist.ImageList.ImageCollection.ListWrapArray!(Image,_images,_adding,_added,_blankListCallback,_removed,false,false,false).insert(int
index, Image value) hidden by ImageCollection is deprecated

Now I know I can bypass this with the -d switch but I'm more interested
in fixing the problem than bypassing it.

There is a trick based on explicit alias to avoid those errors. I'd like the 
idea of using this alias to be present in that error message...

Bye,
bearophile

Please do share. I thought the concept explicit alias simply requires me to do his:

alias ListWrapArray LWA;
mixin LWA!(Image, _images,
        _adding, _added,
        _blankListCallback!(Image), _removed,
        false, false, false);

This did not work... resulted in the same error. On closer look it seems the actual problem is not the template but the definition of "insert" therein. It is being hidden by the definition of insert in ImageCollection.

ImageCollection definition:

        void insert(int index, Image img)
        {
                if(index >= _images.length)
                {
                        add(img);
                }
                else
                {
                        assert(0, "Must add images to the end of the image 
list");
                }
        }

ListWrapArray definition:

        void insert(int index, TValue value)
        {
                _insert(index, value);
        }

In the end it turns out to be the same problem as one and two. Any suggestion on how to deal with these correctly? I can resolve this particular error by renaming the function to "Insert" in ImageCollection. But even though it appeases the compiler, is that the correct solution? Is there something else that I'm not taking into consideration? How do I fix the other two since there is no way to rename opApply and opCmp that I'm aware of?

Thanks

Reply via email to