retvalholder.hpp

来自「一个实现C++反射机制的类库」· HPP 代码 · 共 80 行

HPP
80
字号
/******************************************************************************\
*                                                                              *
*   @.h                                                                        *
*                                                                              *
*   <Purpose of this file>                                                     *
*                                                                              *
\******************************************************************************/

// $Id: RetValHolder.hpp,v 1.1 2007/10/25 14:05:26 tdevadit Exp $



#ifndef REFLCPP_RET_VAL_HOLDER_HPP
#define REFLCPP_RET_VAL_HOLDER_HPP




namespace reflcpp {


/*-----------------------------------------------------------------------------\
|------------------------------------------------------------------------------|
|                                                                              |
|   RetValHolder                                                               |
|                                                                              |
|------------------------------------------------------------------------------|
\------------------------------------------------------------------------------/

    Class to handle return values with partial specialization for void functions.

-                                                                             */

class RetValHolder {

    public:
        virtual ~RetValHolder() {}

        // In order to make this polymorphic
        virtual void dummy() = 0;
};


template <typename Ret_TP>
class RetValHolder_tmpl : public RetValHolder {

    public:
        virtual ~RetValHolder_tmpl() {}

        Ret_TP val() { return m_val; }
        Ret_TP &ref() { return m_val; }
        virtual void dummy() {}

    private:

        Ret_TP m_val;
};


template <>
class RetValHolder_tmpl <void> : public RetValHolder {

    public:

        void val() {}
        virtual void dummy() {}
};


static const char RetValHolder_h_id[] =
"$Id: RetValHolder.hpp,v 1.1 2007/10/25 14:05:26 tdevadit Exp $";



} // namespace



#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?