boolscher Operator



  • groovemaster schrieb:

    volkard schrieb:

    sag mir ma, wie groß sizeof type ist

    Wozu? Stört dich der Member-Funktionszeiger?

    8 oder 12 bytes. nicht 4, und damit schmerzhaft.

    Den kann man natürlich noch eliminieren.

    class safe_bool
    {
    private:
    	struct closed
    	{
    	};
    public:
    	typedef void (*type)(closed);
    	static type value(bool source)
    	{
    		return source ? &safe_bool::non_null : NULL;
    	}
    private:
    	static void non_null(closed)
    	{
    	}
    };
    

    der vorteil deines member-zeugs war wohl, daß man die sehr schwer aus versehen casten kann.
    einen möglichen fehler sehe ich sogar. man hantiert mit zeigern und placement-new. und das will nen void*. und man steckt nen safe_bool rein.
    wird der aktuelle normale funktionszeiger nicht von allein in nen void* konvertiert?

    volkard schrieb:

    warum nicht this?

    Weil ich in einer Non-Memberfunktion nunmal kein this habe. Ich bin aber schon gespannt auf ein Beispiel von dir.[/quote]
    satic zu nehmen ist neu.
    mir scheint, reinterpret_cast muß her.



  • volkard schrieb:

    der vorteil deines member-zeugs war wohl, daß man die sehr schwer aus versehen casten kann.

    Yep.

    volkard schrieb:

    einen möglichen fehler sehe ich sogar. man hantiert mit zeigern und placement-new. und das will nen void*. und man steckt nen safe_bool rein.
    wird der aktuelle normale funktionszeiger nicht von allein in nen void* konvertiert?

    An das implizite Casten nach void* hab ich jetzt beim zweiten Beispiel gar nicht mal gedacht. Aber ein weiterer Grund, weshalb ich wohl beim Member-Funktionszeiger bleiben werden.

    volkard schrieb:

    volkard schrieb:

    warum nicht this?

    Weil ich in einer Non-Memberfunktion nunmal kein this habe. Ich bin aber schon gespannt auf ein Beispiel von dir.

    satic zu nehmen ist neu.
    mir scheint, reinterpret_cast muß her.

    Ich bin immer noch auf Code von dir gespannt. Ich habe es nicht geschafft, gültigen Code mit this zu schreiben, da dies auch mein erster Ansatz war. Allerdings habe ich nicht allzu viel Zeit darin investiert, um sagen zu können, alle Fälle abgecheckt zu haben.


Anmelden zum Antworten