[#BloombergLP-bsls-ProtocolTest_IsAbstract]
= xref:BloombergLP.adoc[BloombergLP]::xref:BloombergLP/bsls.adoc[bsls]::ProtocolTest&lowbar;IsAbstract
:relfileprefix: ../../
:mrdocs:

This class template is a compile&hyphen;time meta&hyphen;function, parameterized with type `T`, the output of which is `value`, which will be `true` if `T` is abstract and `false` otherwise&period; On some platforms, the `IsAbstract` test makes use of the fact that a type &apos;an array of objects of an abstract type&apos; (e&period;g&period;, `T&lsqb;1&rsqb;`) cannot exist&period; Note that it is only an approximation, because this is also true for an incomplete type&period; But, this approximation is good enough for the purpose of testing protocol classes&period; On certain other platforms, the `IsAbstract` test will make use of the fact that abstract types cannot be returned&period; This approximation also has issues, noted below, but is also good enough for the purpose of testing protocol classes&period;

== Synopsis

Declared in `&lt;bsls&lowbar;protocoltest&period;h&gt;`

[source,cpp,subs="verbatim,replacements,macros,-callouts"]
----
template&lt;class T&gt;
struct ProtocolTest&lowbar;IsAbstract;
----

== Enums

[cols="1,4"]
|===
| Name| Description
| xref:BloombergLP/bsls/ProtocolTest_IsAbstract/_04enum.adoc[`Unnamed enum`] 
| Compile&hyphen;time abstractness result for `T`&period;
|===



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