根据en.cppreference.com(据我所知):
std::is_convertible
被性状类需要类型From
&To
为使得与返回类型的函数To
返回一个From
值可以通过编译。std::convertible_to
是一个概念,要求类型From
&To
如上所述,AND使得类型的r 值引用From
可以转换为static_cast<To>
。强加的要求std::is_convertible
似乎相对简单。相反,对于 C++20 特性的简单示例中显示的这种通用概念,r 值引用转换要求std::convertible_to
似乎奇怪地特定。
作为 C++ 的新手,我无法完全理解两个网页中提供的一些术语和部分补充说明,我无法想象两者的要求之间的确切区别。
一些相互关联的问题:
From
& To
of 不仅受到std::is_convertible
奇怪的 r 值引用转换要求的约束,而且受到奇怪的 r 值引用转换要求的实际影响是什么?From
和To
被附加由R值参考铸件的要求被拒绝?std::is_convertible
或std::convertible_to
中的一个而不是另一个作为其函数返回类型或参数类型的约束(除了概念的便利性)?一个更简单的解释或一个例子会有所帮助。谢谢!
我正在编写带有数据输入字段的 HTML 对话框表单,可以单击“取消”按钮退出模式对话框。“提交”、“重置”和“按钮”类型中哪一种<input>
最适合取消按钮?为什么?
元素的 MDN 页面<dialog>
提供了一个示例,其中<button>
(没有类型属性)用于取消和确认按钮: https: //developer.mozilla.org/en-US/docs/Web/HTML/Element/dialog#Advanced_example
该功能的 MDN 页面提供了一个用于取消按钮的HTMLDialogElement.showModal()
类似示例:https: //developer.mozilla.org/en-US/docs/Web/API/HTMLDialogElement/showModal<button type="reset">
我还在网上阅读了一些内容,包括该网站上的一些答案,这些答案<input type="button">
在推荐示例中使用。
总结一下我的理解:
省略的类型或type="button"
按钮并不意味着该按钮将提交有效的表单,也不意味着该表单将明确重置您的数据条目。然而,与type="submit"
. 标记也没有表明这是关闭对话框表单的方法之一。
按钮type="reset"
暗示数据条目将被清除,并且需要 event.preventDefault() 来与标记相矛盾。但是,重置并不理想(https://ux.stackexchange.com/a/42773),您仍然需要编写 JavaScript 来关闭对话框,并且按钮的功能与标记相矛盾,因为表单是用 JavaScript 关闭的,或者如果您决定阻止数据重置。
按钮type="submit"
可能意味着关闭/完成对话框的替代方法,并且当单击提交类型按钮时对话框会自动关闭。您只需要 JavaScript 来侦听关闭事件并检查 的<dialog>
returnValue 属性以查看是否发生取消。然而,标记/提交类型可能意味着表单将与有效条目一起提交而不是取消。
考虑到这一点,如果我的理解是有效的(?),以及我可能忽略的任何其他原因(关于什么标记最具可读性并呈现最优雅的 JavaScript 使用),对话框表单中的“取消”按钮应采用哪种方法?
样本:
<dialog id="forCloseEventListener">
<form method="dialog">
<input type="text" name="data-entry" placeholder="Enter your post code">
<input type="??" value="Cancel">
<input type="submit" value="OK">
</form>
</dialog>
Run Code Online (Sandbox Code Playgroud)
PS:我注意到有一个实验性的 HTMLDialogElement“取消”事件,但它可能会发生变化,并且其 MDN …