std::experimental::erased_type
From cppreference.com
                    
                                        
                    < cpp | experimental
                    
                                                            
                    |   Defined in header  <experimental/utility>
  | 
||
|   struct erased_type { };  | 
(library fundamentals TS) | |
The struct erased_type is an empty struct that serves as a placeholder for a type in situations where the actual type is determined at runtime. For example, in classes that use type-erased allocators, the nested typedef allocator_type is an alias for erased_type.