how to make '==' safe for classes?

ikod geller.garry at gmail.com
Sun Oct 28 12:38:12 UTC 2018


Hello

How to make this code to compile? My goal is safe(not @trusted) 
longFunction().


---
class C
{
     override bool opEquals(Object o) const @safe
     {
         return true;
     }
}
bool longFunction(C a, C b) @safe
{
     return a==b;
}
void main()
{
}
---


As far as I understand the problem is that AST for this code 
looks like

---
import object;
class C : Object
{
	override const @safe bool opEquals(Object o)
	{
		return true;
	}
}
bool longFunction(C a, C b)
{
	return opEquals(a, b);
}
void main()
{
	return 0;
}
RTInfo!(C)
{
	enum typeof(null) RTInfo = null;

}
---

and object.opEquals(a,b) do not inherits safety from class C 
properties, and also I can't override it.

Is there clean way to use '==' here, or I have to convert this to 
a.opEquals(b) for classes, leaving '==' for structs?

Thanks!


More information about the Digitalmars-d-learn mailing list