13.1.25.5 Objectへの型の拡大

Anyからオブジェクト参照を基本Object型として抽出する方が望ましい場合があります。これを実行するには、boolean、char、およびoctetの抽出に必要なヘルパー型と同様のヘルパー型を使用します。

// C++
class Any
{
   public:
     ...
     struct to_object {
        to_object(Object_ptr &obj) : ref(obj) {} 
        Object_ptr &ref;
    ;
    Boolean operator>>=(to_object) const;
    ...
};

to_objectヘルパー型は、Anyからオブジェクト参照を基本Object型として抽出するために使用します。AnyにそのTypeCodeとして示されたオブジェクト参照型の値がある場合、抽出関数operator>>=(to_object)は、その格納されているオブジェクト参照を明示的にObject型に拡大し、TRUEを返します。それ以外の場合は、FALSEを返します。抽出されたオブジェクト参照の型の拡大を実行するのは、オブジェクト参照抽出関数のみです。通常のオブジェクト参照の抽出と同じく、to_object抽出演算子は、オブジェクト参照を複製しません。