Listing 6


  template<typename T>
  struct optimize
  {
    enum
    {
        T_size_    = sizeof(T)
      , base_size_  = sizeof(object_holder)
      , size_ok_    = (T_size_ <= base_size_)
      , value      = size_ok_
    };
  };

  template<typename T>
  struct table
  {
    enum { optimized = sizeof(T) <= sizeof(object_holder) };

    static fxn_ptr_table* get()
    {
      static fxn_ptr_table static_table = {
        &fxns<optimized>::template impl<T>::type
      , &fxns<optimized>::template impl<T>::destructor
      , &fxns<optimized>::template impl<T>::static_delete
      , &fxns<optimized>::template impl<T>::clone
      , &fxns<optimized>::template impl<T>::assign
      , &fxns<optimized>::template impl<T>::is_optimized
      , &fxns<optimized>::template impl<T>::swap
      };
      return &static_table;
    }
  };