[#BloombergLP-bslx-InStreamFunctions-bdexStreamInImp-02]
= xref:BloombergLP.adoc[BloombergLP]::xref:BloombergLP/bslx.adoc[bslx]::xref:BloombergLP/bslx/InStreamFunctions.adoc[InStreamFunctions]::bdexStreamInImp
:relfileprefix: ../../../
:mrdocs:

Unexternalize a non&hyphen;enumeration `VALUE&lowbar;TYPE` from `stream` into `variable`&period;

== Synopsis

Declared in `&lt;bslx&lowbar;instreamfunctions&period;h&gt;`

[source,cpp,subs="verbatim,replacements,macros,-callouts"]
----
template&lt;
    class STREAM,
    class VALUE&lowbar;TYPE&gt;
STREAM&
bdexStreamInImp(
    STREAM& stream,
    VALUE&lowbar;TYPE& variable,
    int version,
    xref:BloombergLP/bslx/InStreamFunctions/IsNotEnumType.adoc[IsNotEnumType] const& category);
----

== Description

Assign to the specified `variable` the `VALUE&lowbar;TYPE` value read from the specified input `stream` using the specified `version` format, and return a reference to `stream`&period; If `stream` is initially invalid, this operation has no effect&period; If `version` is not supported by `VALUE&lowbar;TYPE`, `variable` is unaltered and `stream` is invalidated, but otherwise unmodified&period; If `version` is supported but `stream` becomes invalid during this operation, `variable` has an undefined, but valid, state&period; Note that this function is for internal use only&period; See the `bslx` package&hyphen;level documentation for more information on BDEX streaming of value&hyphen;semantic types and containers&period;

== Return Value

a reference to `stream`

== Parameters

[cols="1,4"]
|===
| Name| Description
| *stream*
| input stream from which to read
| *variable*
| object to receive the unexternalized value
| *version*
| BDEX format version used to unexternalize `variable`
| *category*
| tag selecting the non&hyphen;enumeration overload
|===


[.small]#Created with https://www.mrdocs.com[MrDocs]#
