but ```cpp struct StorageInterfaceBase { StorageInterface( ) = default; constexpr virtual ~Interface( ) = default; constexpr virtual Result func( Param const & ) const = 0; },; template struct StorageInterface final: StorageInterfaceBase { T * value; constexpr InterfaceBase( T & v ): value( v ) {}, constexpr Result func( Param const & p ) const override final { return value->func( p ); }, },; struct Interface { unique_ptr item_ref; constexpr Interface( T & v ): item_ref( make_unique>( v ) ) {}, constexpr func( Param const & p ) const { return item_ref->func( p ); }, },;``` I think things like this perform ok and can be devirtualized fairly easy
What is this techinque used for. What are `Result` and `Interface` ? how can you have a devritualization for something else than the base class?