#ifndef STATIC_PROPERTY_H
#define STATIC_PROPERTY_H

#ifndef PROPERTY_H
#include "Property.h"
#endif

namespace MM
{

template <class T>
class Static_property : public Property <T>
{
    T                   value_;
    bool                flag_;

public:
    Static_property () : flag_(false) {}
    Static_property (T const& prototype) : value_(prototype), flag_(false) { }

    virtual bool        exist ()            {return flag_;}
    virtual T *         operator -> ()      {flag = true;}
    virtual T const*    operator -> () const     =0;
};

}//MM

#endif //STATIC_PROPERTY_H
