| 1234567891011121314151617181920212223242526272829303132333435363738 | #pragma oncenamespace OTSController {	/// <summary>	/// Singleton template class by smart pointer.	/// </summary>	template<class singleType>	class Singleton	{	public:		static std::shared_ptr<singleType> GetInstance()		{			auto shareObject = m_singleObject.lock();			if (!shareObject)			{				shareObject.reset(new singleType);				m_singleObject = shareObject;			}			return shareObject;		}	private:		/// <summary>		/// The single object		/// </summary>		static std::weak_ptr<singleType> m_singleObject;	};	/// <summary>	/// The single object	/// </summary>	template<class singleType>	std::weak_ptr<singleType> Singleton<singleType>::m_singleObject;}
 |