Browse Source

libobs: Fix template errors on non-MS compilers

Because apparently Microsoft's compilers are bad at following language
specs.
jp9000 3 years ago
parent
commit
2f13d92d25
1 changed files with 18 additions and 7 deletions
  1. 18 7
      libobs/obs.hpp

+ 18 - 7
libobs/obs.hpp

@@ -119,22 +119,33 @@ class OBSRef : public OBSRefAutoRelease<T, release> {
 	inline OBSRef &Replace(T valIn)
 	{
 		addref(valIn);
-		release(val);
-		val = valIn;
+		release(this->val);
+		this->val = valIn;
 		return *this;
 	}
 
 	struct TakeOwnership {
 	};
-	inline OBSRef(T val, TakeOwnership) : OBSRefAutoRelease(val) {}
+	inline OBSRef(T val_, TakeOwnership)
+		: OBSRefAutoRelease<T, release>::OBSRefAutoRelease(val_)
+	{
+	}
 
 public:
-	inline OBSRef() : OBSRefAutoRelease(nullptr) {}
-	inline OBSRef(const OBSRef &ref) : OBSRefAutoRelease(ref.val)
+	inline OBSRef()
+		: OBSRefAutoRelease<T, release>::OBSRefAutoRelease(nullptr)
+	{
+	}
+	inline OBSRef(const OBSRef &ref)
+		: OBSRefAutoRelease<T, release>::OBSRefAutoRelease(ref.val)
+	{
+		addref(this->val);
+	}
+	inline OBSRef(T val_)
+		: OBSRefAutoRelease<T, release>::OBSRefAutoRelease(val_)
 	{
-		addref(val);
+		addref(this->val);
 	}
-	inline OBSRef(T val_) : OBSRefAutoRelease(val_) { addref(val); }
 
 	inline OBSRef &operator=(const OBSRef &ref) { return Replace(ref.val); }
 	inline OBSRef &operator=(T valIn) { return Replace(valIn); }