C++ named requirements: TransformationTrait
From cppreference.com
                    
                                        
                    
                    
                                                            
                    A TransformationTrait is a class template that provides a transformation of its template type parameter.
Requirements
- Takes one template type parameter (additional template parameters are optional and allowed)
- The transformed type is a publicly accessible nested type named type
Standard library
The type modifications and transformations all satisfy TransformationTrait.
The following standard library class templates also satisfy TransformationTrait.
| obtains the type of the specified element (class template specialization) | |
| obtains the type of the elements of pair(class template specialization) | |
| obtains the type of the elements of array(class template specialization) | |
| obtains the type of the alternative specified by its index, at compile time (class template) (alias template) |