问题标签 [declval]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
68 浏览

c++ - 受保护构造函数的 noexcept 上的静态断言

我试图断言以下受保护的类构造函数可能会或可能不会抛出如下:

静态断言应该在第一种情况下失败并在第二种情况下通过。

错误是type name is not allowed,我不确定我应该使用什么语法或更好的方法。

在第三种static_assert情况下,它总是会失败,因为构造函数不是公共的。

0 投票
1 回答
85 浏览

c++ - 不能调用 std::declval 的语句是什么意思?

在它的cppreference-pagestd::declval显示以下内容:

返回值

无法调用,因此永远不会返回值。

这是什么意思?当我们使用它时,我们肯定会调用它吗?

0 投票
1 回答
131 浏览

c++ - std::reference_wrapper,构造函数实现说明

我一直试图从这里std::reference_wrapper了解 , 的实现,如下所示:

尽管 std::reference_wrapper 的实现已在此处此处进行了讨论,但没有一个讨论我感到困惑的构造函数实现。我的困惑是: 1.) 构造函数是一个模板函数,采用U与模板类 param 不同的类型 param() T。我已经看到一个类的成员函数是模板函数,并且取决于不同的类型参数,然后是模板类的类型参数,但我想不出它在这里是如何工作的。这里有一个相关的问题,但我无法将它与我的困惑联系起来。2.)我看到构造函数中的第二个类型参数被进一步用来sfinae出来的东西,但我不明白如何detail::FUN<T>(std::declval<U>())被评估。

有人可以解释一下吗?

编辑:这是从microsoft.docs添加的示例。该示例的一个片段是:

有了reference_wrapper的实现,又从 A.1哪里调用reference_wrapper的构造函数呢?假设detail::FUN<T>(std::declval<U>()将调用detail::FUN<T>(std::declval<int>(), 应该是由于deleted重载而导致的替换失败(假设std::declval<int>将被读取为对 int 的右值引用)。我在这里想念什么?

0 投票
1 回答
49 浏览

c++ - 如何在noexcept()函数中检查c ++中的复制赋值运算符

我尝试检查T函数do_math()中的模板类是否有可能在复制赋值运算符中引发异常。

但是下面的代码会抛出一个错误:

请帮我写正确的支票。