Index: trunk/abdev/BasicCompiler64/Compile_Func.cpp
===================================================================
--- trunk/abdev/BasicCompiler64/Compile_Func.cpp	(revision 424)
+++ trunk/abdev/BasicCompiler64/Compile_Func.cpp	(revision 425)
@@ -304,5 +304,5 @@
 
 		//オーバーロードを解決
-		pUserProc=OverloadSolution( name, subs, *pBaseParams, Type() );
+		pUserProc=OverloadSolution( name, subs, *pBaseParams, Type(), Type() );
 
 		if( isCallOn && baseType.IsDelegate() )
Index: trunk/abdev/BasicCompiler64/Compile_Statement.cpp
===================================================================
--- trunk/abdev/BasicCompiler64/Compile_Statement.cpp	(revision 424)
+++ trunk/abdev/BasicCompiler64/Compile_Statement.cpp	(revision 425)
@@ -781,5 +781,5 @@
 
 						//オーバーロードを解決
-						const UserProc *pUserProc = OverloadSolution("==",subs, params, NULL);
+						const UserProc *pUserProc = OverloadSolution( "==", subs, params, Type( DEF_BOOLEAN ), type1 );
 
 						delete params[0];
Index: trunk/abdev/BasicCompiler64/Compile_Var.cpp
===================================================================
--- trunk/abdev/BasicCompiler64/Compile_Var.cpp	(revision 424)
+++ trunk/abdev/BasicCompiler64/Compile_Var.cpp	(revision 425)
@@ -453,5 +453,5 @@
 				int ptrLevel = PTR_LEVEL( resultType.GetBasicType() );
 
-				// TODO: ベースオブジェクト（指定されていないときはObjectクラス）にセットする
+				// 制約クラス（指定されていないときはObjectクラス）にセットする
 				resultType.SetBasicType( DEF_OBJECT );
 
Index: trunk/abdev/BasicCompiler64/Opcode.h
===================================================================
--- trunk/abdev/BasicCompiler64/Opcode.h	(revision 424)
+++ trunk/abdev/BasicCompiler64/Opcode.h	(revision 425)
@@ -289,9 +289,9 @@
 
 private:
-	bool EvaluateOverloadScore( int level, const Parameters &targetParms, const Type &targetResultType, bool &isErrored );
-
-public:
-	const UserProc *_OverloadSolution( const char *name, std::vector<const UserProc *> &subs, bool isEnabledReturnType = false );
-	const UserProc *OverloadSolution( const char *name, std::vector<const UserProc *> &subs, bool isEnabledReturnType = false );
+	bool EvaluateOverloadScore( int level, const Parameters &targetParms, const Type &targetResultType, const Type &leftType, const UserProc &userProc, bool &isErrored );
+
+public:
+	const UserProc *_OverloadSolution( const char *name, std::vector<const UserProc *> &subs, const Type &leftType, bool isEnabledReturnType );
+	const UserProc *OverloadSolution( const char *name, std::vector<const UserProc *> &subs, const Type &leftType, bool isEnabledReturnType = false );
 
 	void ApplyDefaultParameters( const Parameters &params );
Index: trunk/abdev/BasicCompiler64/OperatorProc.cpp
===================================================================
--- trunk/abdev/BasicCompiler64/OperatorProc.cpp	(revision 424)
+++ trunk/abdev/BasicCompiler64/OperatorProc.cpp	(revision 425)
@@ -66,5 +66,5 @@
 	if(idCalc==CALC_EQUAL) lstrcpy(temporary,"==");
 	else GetCalcName(idCalc,temporary);
-	const UserProc *pUserProc = OverloadSolution( temporary, subs, params, baseType );
+	const UserProc *pUserProc = OverloadSolution( temporary, subs, params, baseType, leftType );
 
 	if(!pUserProc){
