Home » U++ TheIDE » U++ TheIDE: Compiling, Linking, Debugging of your packages » Upp::Sort(begin, end, less) does not compile under MSC8 when less is a plain C function 
	
		
		
			| Upp::Sort(begin, end, less) does not compile under MSC8 when less is a plain C function [message #29372] | 
			Sat, 16 October 2010 12:35   | 
		 
		
			
				
				
				
					
						  
						Didier
						 Messages: 736 Registered: November 2008  Location: France
						
					 | 
					Contributor   | 
					 | 
		 
		 
	 | 
 
	
		Hi all, 
 
I stumbled accross an unexpected compile error that appears only when compiling with MSC8: no problem with GCC. 
 
There is an easy workaround using a functor instead of a plain C compare function. 
 
Is it an MSC8 limitation or a GCC added feature ?!? 
 
 
Here is a sample code: 
#include <Core/Core.h>
using namespace Upp;
typedef Pointf  XY;
bool CompareXY_x(XY a, XY b)
{
	return (a.x < b.x);
}
struct MyLessFunctor {
	bool operator () (const XY& a, const XY& b) const
	{
		return CompareXY_x(a, b);
	}
};
CONSOLE_APP_MAIN
{
	typedef Vector<XY> PointsType;
	
	
	PointsType points;
	
	points << XY(1,2) << XY(2,2) << XY(3,2) << XY(4,2) << XY(6,2);
	Sort(points, CompareXY_x); // Compile on GCC only
	Sort(points, MyLessFunctor() );// compiles on GCC and MSC8
}
 
		
		
		[Updated on: Sat, 16 October 2010 12:37] Report message to a moderator  
 |  
	| 
		
	 | 
 
 
 |  
	| 
		
 |  
	| 
		
 |  
	| 
		
 |   
Goto Forum:
 
 Current Time: Tue Nov 04 03:41:47 CET 2025 
 Total time taken to generate the page: 0.08631 seconds 
 |