You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I am filing this as a follow-up issue after #1444 is merged. That PR is eliminating a serious ODR issue and is replacing it with a minor ODR issue. There is no longer ABI incompatibility based on language standard or defining WINRT_NO_SOURCE_LOCATION. However, there is a minor new ODR incompatibility when it comes to the default arguments to the current() method.
The value of the default arguments are separate from the type of the method itself, so this misbehavior is minor at worst. When all translation units agree then there is no ODR and everything is great. When mixing different versions (e.g. cpp17 and cpp20 static libraries) the behavior becomes undefined. If a given method is only used by one library or the other then the source location value for that library will be in effect. If a method is used by both libraries then the linker will choose which version is linked (with or without source location).
tl;dr - If you use cppwinrt in both cpp17 and cpp20 code and link them together then sometimes source location will be missing, and sometimes it will be present. Your mileage may vary.
Reproducible example
No response
Expected behavior
No response
Actual behavior
No response
Additional comments
No response
The text was updated successfully, but these errors were encountered:
Immediately closing this issue because there are no known changes at this time that can address it. If that changes in the future then we'll have this issue to reference against.
Version
(not yet released at this time)
Summary
I am filing this as a follow-up issue after #1444 is merged. That PR is eliminating a serious ODR issue and is replacing it with a minor ODR issue. There is no longer ABI incompatibility based on language standard or defining
WINRT_NO_SOURCE_LOCATION
. However, there is a minor new ODR incompatibility when it comes to the default arguments to thecurrent()
method.The value of the default arguments are separate from the type of the method itself, so this misbehavior is minor at worst. When all translation units agree then there is no ODR and everything is great. When mixing different versions (e.g. cpp17 and cpp20 static libraries) the behavior becomes undefined. If a given method is only used by one library or the other then the source location value for that library will be in effect. If a method is used by both libraries then the linker will choose which version is linked (with or without source location).
tl;dr - If you use cppwinrt in both cpp17 and cpp20 code and link them together then sometimes source location will be missing, and sometimes it will be present. Your mileage may vary.
Reproducible example
No response
Expected behavior
No response
Actual behavior
No response
Additional comments
No response
The text was updated successfully, but these errors were encountered: