-
Notifications
You must be signed in to change notification settings - Fork 6.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[qtwebengine] Fix stuff #35639
[qtwebengine] Fix stuff #35639
Conversation
+ //RTC_FORCE_INLINE auto operator<<(const std::string& arg) const { | ||
+ // return LogStreamer<Val<CheckArgType::kStdString, const std::string*>>(MakeVal(arg), this); | ||
+ // | ||
+ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
+ //RTC_FORCE_INLINE auto operator<<(const std::string& arg) const { | |
+ // return LogStreamer<Val<CheckArgType::kStdString, const std::string*>>(MakeVal(arg), this); | |
+ // | |
+ |
Not worth resetting a build of qtwebengine over this
}; | ||
|
||
+ | ||
+// Base case: Before the first << argument. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Observations:
- Changing the return type to
auto
appears OK because the code before was always returning a prvalue and there's no intended SFINAE happening there - The previous code is doing
decltype(MakeVal(an xvalue))
while the new code is doingdecltype(MakeVal(an lvalue))
. But the runtime code in both cases is calling with an lvalue. - You don't need C++20
remove_cvref_t
; template argument deduction will never deduce a ref here, so C++14remove_const_t
should be sufficient. Probably not worth resetting the build over this..
I'm testing to see if just changing decltype(MakeVal(std::declval<U>()))
to decltype(MakeVal(std::declval<U&>()))
to match the runtime code fixes it
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just remove remove_cvref_t
I just used it for testing. Seems like I removed it from the enum test but forgot to remove it from the arithmetic check.
I'm testing to see if just changing decltype(MakeVal(std::declval())) to decltype(MakeVal(std::declval<U&>())) to match the runtime code fixes it
Shouldn't make a difference since the signature of MakeVal is in almost all cases RetType MakeVal(const argtype& x)
and that doesn't care about U
or U&
. However cl is strange from time to time.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm testing to see if just changing decltype(MakeVal(std::declval())) to decltype(MakeVal(std::declval<U&>())) to match the runtime code fixes it
Test failed
}; | ||
|
||
+ | ||
+// Base case: Before the first << argument. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm testing to see if just changing decltype(MakeVal(std::declval())) to decltype(MakeVal(std::declval<U&>())) to match the runtime code fixes it
Test failed
I don't think this fixed it. In the CI run of #35640 I'm still seeing:
|
Should fix #35260
Also fixes clang-cl builds