opEquals nothrow

Aldo via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Thu Jul 20 08:10:24 PDT 2017


On Thursday, 20 July 2017 at 14:59:50 UTC, Steven Schveighoffer 
wrote:
> On 7/20/17 10:38 AM, Aldo wrote:
>> Hello,
>> 
>> im tring to add nothrow keyword in my code, but compilation 
>> fails :
>> 
>> function 'object.opEquals' is not nothrow
>> 
>> 
>> its a simple comparison between 2 objects. How to make 
>> opEquals nothrow ?
>
> You can't. Object.opEquals is not nothrow, so object.opEquals 
> is not nothrow (note the former is the virtual member function, 
> the latter is a global function which is what the compiler 
> actually calls).
>
> It is a legacy limitation. Until we get rid of all the Object 
> base methods for things like opEquals and toHash, we will not 
> be able to fix this.
>
> -Steve

Im using DerelictGLFW3, to process events im doing this :

glfwSetMouseButtonCallback(window, &onMouseClick);

onMouseClick function must be nothrow.

But now I can't do anything in this function because I can't 
convert my code to nothrow.

Can I put a try catch in the body ?

extern(C) nothrow
{
     void onMouseClick(GLFWwindow* window, int button, int action, 
int d)
     {
        try
        {
            // my code
        }
        catch
        {

        }
     }
}

it seems its working but what about performances ?

thanks



More information about the Digitalmars-d-learn mailing list