info/=> cws fwkpostbeta1 : about operator >>= ( Any const &, SomeType & rhs )

[email protected] Wed, 21 Sep 2005 13:08:23 +0200 (CEST)
Newsgroups gmane.comp.openoffice.announce.interface
Message-ID <3603916.1127300903140.JavaMail.root@sd-web1>
Type
info

Title
about operator >>= ( Any const &, SomeType & rhs )

Posted by
[email protected]

Affected
...,

Effective from
=> cws fwkpostbeta1

Summary

If operator >>= ( Any const &, SomeType & rhs ) returns false, then the right hand side argument has *not* been modified.

Description

Just because there has been confusion and a recent bug, I want to
recall that in case of an invalid >>= assignment, the right hand side
argument is *not* modified.

Valid assignments are most similar to what C++ compilers take without
warning, e.g. widening conversions without data loss. Some examples:

sal_Int32 n;
Any( static_cast<sal_Int8>(5) ) >>= n; // returns true: ok
Any(/*VOID*/) >>= n; // returns false: n still 5

For interfaces, the source object may be queried for the demanded
right hand side interface, e.g.

Reference<XFoo> x( ...;
Any(/*VOID*/) >>= x; // returns always false, x is untouched!

Any( Reference<XFoo>() ) >>= x; // returns true: x is cleared (null)
Mind that this is a valid assignment.
The operator does not signal whether the right hand reference is non-null!

Any( Reference<XBar>(non-null) ) >>= x; // returns true if object
supports interface XFoo, else false (latter leaves x untouched which
has been fixed by issue 41709)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]