🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: de.comp.lang.c++
Article #966

Re: Typ eines ?: Ausdruck?

#966
From: Uwe Tantz
Date: Wed, 06 Dec 1995 20:23
47 lines
2648 bytes
On 6 Dec 1995, Ullrich von Bassewitz wrote:

> Und gleich nochmal eine Frage:
> 
> Welchen Typ hat das Ergebnis eines ?: Ausdrucks?
> 
> Grund fuer meine Frage ist wiederum ein Verhalten der neuen Version von gcc.
> Und zwar wird ploetzlich ein Konstrukt wie
> 
>     Window* W = (A == B)? LastWindow : NULL;
> 
> mit einer Warnung kommentiert:
> "ANSI C++ forbids implicit conversion from `void*' in initialization"
> 
> Was g++ da macht ist so ungefaehr klar: Der ?: Ausdruck wird ausgewertet,
> das Ergebnis ist aber kein Window* (so wie frueher und bei allen anderen
> Compilern die ich kenne), sondern es wird "void*" als kleinster gemeinsamer
> Nenner gewaehlt, woraufhin die Zuweisung fehlschlaegt.
> 
> Ist das tatsaechlich nach dem neuen Standard richtig?
> 
> Wenn ich den ?: Ausdruck als andere Schreibweise fuer ein if ansehe, dann
> ist es nicht richtig (if Ausdruecke werden von g++ auch korrekt gehandhabt),
> andererseits hat ein if Statement auch keinen Ergebnistyp...
> 
> Gruss
> 
> 
Ich weiss zwar nicht, was der Standard zu diesem Thema sagt, ich habe
aber beim (nicht mehr ganz) aktuellen Microsoft Visual C++ 2.2 das
gleiche Problem: Der Typ des ?:-operators muss sowohl mit dem zweiten, 
als auch mit dem dritten Argument vertraeglich sein, also exakt das 
gleiche Verhalten wie beim gnu.
Ich hab mir dann damit beholfen den NULL Pointer auf den passenden Typ zu 
casten (auf Window* in deinem Bsp.).
Soweit ich's ueberblicke, macht das aber nur im Zusammenhang mit dem 
NULL-Pointer Probleme, weil bei der Zuweisung von NULL die Typsicherheit 
gewissermassen aufgehoben ist (NULL ist ja als #define NULL 0L 
implementiert).
Tschuess
	Uwe

+---------------------+-------------------------------------------+
| Uwe-Krischna Tantz  | Tel:   0941 / 56 31 40                    |
| Blaue-Stern-Gasse 7a| EMail: uwe.tantz@physik.uni-regensburg.de |
| 93047 Regensburg    |                                           |
+---------------------+-------------------------------------------+
Technical Details
Message-ID: <Pine.SOL.3.90.951206211258.17953B-100000@rphc6.physik.uni-regensburg.de>
Path: arc1-ca.pugleaf.net!uni-regensburg.de!news
References: <RCD7B0RH@wuschel.ibb.schwaben.com>

Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!uni-regensburg.de!news
From: Uwe Tantz <c4037@rphc1.physik.uni-regensburg.de>
Newsgroups: de.comp.lang.c++
Subject: Re: Typ eines ?: Ausdruck?
Date: Wed, 6 Dec 1995 21:23:08 +0100 (MET)
Organization: University of Regensburg, Germany
Message-ID: <Pine.SOL.3.90.951206211258.17953B-100000@rphc6.physik.uni-regensburg.de>
References: <RCD7B0RH@wuschel.ibb.schwaben.com>
NNTP-Posting-Host: rphc6.physik.uni-regensburg.de
Mime-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII
X-Sender: c4037@rphc6.physik.uni-regensburg.de
In-Reply-To: <RCD7B0RH@wuschel.ibb.schwaben.com>