[#BloombergLP-bslmf-SelectTraitCase] = xref:BloombergLP.adoc[BloombergLP]::xref:BloombergLP/bslmf.adoc[bslmf]::SelectTraitCase :relfileprefix: ../../ :mrdocs: This template expresses a class that is unique for the specified (template parameter) `t_TRAIT` metafunction. An instantiation of this template is the "compile‐time return value" of `SelectTrait` (see below). `SelectTraitCase` acts as a sort of compile‐time pointer‐to‐metafunction that holds the identity of a metafunction similar to the way a pointer‐to‐function holds (at run‐time) the identity of a function. As in the pointer‐to‐function case, a `SelectTraitCase` can also be used indirectly to evaluate `t_TRAIT` (at compile time). Also note that, when `SelectTraitCase` is specialized with the default `t_TRAIT` type parameter, `SelectTrait_False`, it essentially means that none of the traits specified to `SelectTrait` match. == Synopsis Declared in `<bslmf_selecttrait.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<template<class> typename t_TRAIT = SelectTrait_False> struct SelectTraitCase; ---- == Types [cols="1,4"] |=== | Name| Description | xref:BloombergLP/bslmf/SelectTraitCase/Eval.adoc[`Eval`] | Evaluates `t_TRAIT` for the specified (template parameter) `T` type. The resulting `Eval<T>` instantiation is derived from `true_type` if `t_TRAIT<T>` is derived from `true_type` and `false_type` if `t_TRAIT<T>` is derived from `false_type`. (More generally, `Eval<T>` is derived from `t_TRAIT<T>::type`.) |=== == Type Aliases [cols="1,4"] |=== | Name| Description | xref:BloombergLP/bslmf/SelectTraitCase/Type.adoc[`Type`] | Alias for the selected trait case type. |=== [.small]#Created with https://www.mrdocs.com[MrDocs]#