13.1.25.1 Handling Typed Values
To decrease the chances of creating an any
with a
mismatched TypeCode and value, the C++ function overloading
facility is utilized. Specifically, for each distinct type in an
OMG IDL specification, overloaded functions to insert and extract
values of that type are provided. Overloaded operators are used for
these functions to completely avoid any name space pollution. The
nature of these functions, which are described in detail below, is
that the appropriate TypeCode is implied by the C++ type of the
value being inserted into or extracted from the
any
.
Since the type-safe any
interface described below
is based upon C++ function overloading, it requires C++ types
generated from OMG IDL specifications to be distinct. However,
there are special cases in which this requirement is not met:
- The Boolean, octet, and char OMG IDL types are not required to map to distinct C++ types, which means that a separate means of distinguishing them from each other for the purpose of function overloading is necessary. The means of distinguishing these types from each other is described in Distinguishing Boolean, Octet, Char, and Bounded Strings.
- Since all strings are mapped to
char*
regardless of whether they are bounded or unbounded, another means of creating or setting anany
with a bounded string value is necessary. - In C++, arrays within a function argument list decay into pointers to their first elements. This means that function overloading cannot be used to distinguish between arrays of different sizes. The means for creating or setting an
any
when dealing with arrays is described below and in Arrays.
Parent topic: Any Type