So I've done some research on this.
Apparently this is a "feature" of gcc4 in that it's now implementing the spec correctly, at the expense of working code.

XCode 2.1 merged a ton of the gcc 4.0.0 final fixes since XCode 2.0's release.
The problem is, it's not properly casting <<'s to an integer from an enum, ie, /System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/IntlResources.h contains:
|
Source code
|
1
2
3
4
5
6
7
8
9
|
enum {
/* One more flag in the itlcFlags byte */
itlcDisableKeyScriptSync = 3 /*Disable font and keyboard script synchrinozation*/
};
enum {
/* We should define masks, too. */
itlcDisableKeyScriptSyncMask = 1 << itlcDisableKeyScriptSync /*Disable font and keyboard script synchrinozation mask*/
};
|
...changing it to:
|
Source code
|
1
2
3
4
5
6
7
8
9
|
enum {
/* One more flag in the itlcFlags byte */
itlcDisableKeyScriptSync = 3 /*Disable font and keyboard script synchrinozation*/
};
enum {
/* We should define masks, too. */
itlcDisableKeyScriptSyncMask = 1 << int(itlcDisableKeyScriptSync) /*Disable font and keyboard script synchrinozation mask*/
};
|
...fixes it, but obviously, f**king with system headers is bad. Did I miss an upgrade? Did apple fail to test any of their frameworks against xcode 2.1?
Is there any way to work around this that doesn't include messing with system headers? It looks like it might be an issue with QNoDebug overloading, but I don't really know C++ enough to have any idea what's going on...