In the EWG telecon today, we discussed core issue 1555 (http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_closed.html#1555). The summary of the issue is that the standard makes function types of different language linkage incompatible, thus calling a function from a pointer with different language linkage is undefined behavior. One unnamed implementation was referenced during the discussion where language linkage effects calling convention.
The major implementations (and none other than the 1 unnamed one listed) simply don’t implement this restriction (that the types aren’t compatible) because the calling convention is the same between the linkages.
EWG was undecided as to whether we should remove this instance restriction, or leave it as undefined behavior. None seemed to support CWG1555’s proposed resolution of conditionally-supported behavior.
(TL-DR people can start here😊 )
The outcome of the discussion is that the impact and scope of this Undefined Behavior should be evaluated by SG12, and if possible, provide a set of recommendations for dealing with this core issue.