2

私はメタプログラミングに関する本を読んでいますが、トランポリンに関する離脱があります:

struct generic_t
{
    void* obj;
    void(*del)(void*);
};
template <typename T> // outer template parameter
generic_t copy_to_generic(const T& value)
{
    struct local_cast // local class
    {
        static void destroy(void* p) // void*-based interface
        {
            delete static_cast<T*>(p); // static type knowledge
        }
    };
    generic_t p;
    p.obj = new T(value); // information loss: copy T* to void*
    p.del = &local_cast::destroy;
    return p;
}

私はそれがどのように機能するかを完全に理解していますが、それのアプリケーションが何であるかはわかりません! そして、あなたは通常、このテクニックをどこで使用しますか? 誰かそれについて知っていますか?ありがとう :)

4

1 に答える 1