如何解决在类内部定义的C ++ 17演绎指南在该类内部无效,但在该类外部有用
if (webview.goBack()){
// if web view has something to go back use it
}else{
navigation.goBack()
}
我在名为sampleView : Html Message
sampleView =
Html.div (class "sample-card" :: Styles.sampleCard)
[ Html.div
(class "sample-card-list" :: Styles.sampleCardList)
[
Html.button
(class "sample-card-button" :: Styles.sampleCardListButton)
[
Html.text "サンプルボタン"
]
]
]
的类中定义了一些<button class="sample-card-button" onclick="btnClick();">サンプルボタン</button>
/* JavaScript 側 */
function btnClick() {
console.log("クリックされました");
});
演绎指南。
但是我发现包含模板参数#include <variant>
struct A { };
struct B { };
struct Test
{
template<typename Ts>
struct overloaded : Ts { };
// 1st Deduction Guide
template<typename Ts>
overloaded(Ts)->overloaded<Ts>;
// 2nd Deduction Guide for class "A"
overloaded(A)->overloaded<A>;
void Fun()
{
// OK
overloaded obj1{ A{} };
// Error: No instance of constructor matches the argument list
// I think the 1st Deduction Guide is not effective inside class "Test"
overloaded obj2{ B{} };
}
};
int main()
{
// All Deduction Guides in class "Test" are effective here
// OK
Test::overloaded obj1{ A{} };
// OK
Test::overloaded obj2{ B{} };
return 0;
}
的第一推论指南在类C++17
本身内部无效。但在它之外有效,例如在Test
函数中。
Ts
不包括模板参数的第二推论指南在班级内部和外部均有效。
Test
谁能告诉我为什么?
我的IDE是main
,C ++标准是template<typename Ts>
overloaded(Ts)->overloaded<Ts>;
。
谢谢。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。