Roumen Petrov wrote:
Martin v. Löwis wrote: [SNIP]
No. tim_one changed it to be long double in r25454 to support some system that Dave Abrahams uses, so it needs to stay that way :-)
However, we can certainly acknowledge that this is a bug in MingW, and special case it. Either introduce a symbolic type gchead_align_t which gets defined to just double on MingW, or put the #ifdef right into the structure.
No this is not GCC bug. GCC support "hardware extended precision" as implement long double and mingw w32api implement long double functions.
And that exactly is the bug. GCC cannot simultaneously be Windows-compatible, and also support extended precision floating point under the name "long double".
According to http://msdn.microsoft.com/en-us/library/9cx8xs15.aspx it is MSVC limitation.
Therefore, mingw should also implement that limitation, to be binary-compatible with MSVC. Since binary compatibility is an explicit goal of mingw, failing to provide binary compatibility is a bug. Regards, Martin