问题标签 [c++14]

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 投票
1 回答
184 浏览

c++ - 如果我们在定义中使用“decltype(auto) f()”作为函数声明并带有“decltype(f()) result”会发生什么?

这确实是一个 C++14 问题。而且它的理论多于实践。

有时您会零碎地构建函数的结果:

但是如果你改变返回类型,你也必须改变“a”的类型。我通过一个特殊的声明来解决这个问题:

(对于新手来说:如果函数参数使用 r-value 引用会有什么陷阱?提示:我们需要std::forward修复它。)一个问题随机出现在我的脑海中:如果我使用新的 C++14 特性“ decltype( auto )" 作为返回类型?!我们会得到一个递归黑洞吗?还是不允许的错误?将初始化程序添加到“a”会使一切正常吗?

0 投票
2 回答
1268 浏览

c++ - CRTP和c++1y返回类型推导

我最近在玩 CRTP,当我在使用 c++1y 类型推断的函数时遇到了一些令我惊讶的事情。以下代码有效:

我假设 from 的返回类型Base<Derived>::foodecltype返回的表达式的 a ,但是如果我像这样修改函数foo

此代码不再起作用,我收到以下错误(来自 GCC 4.8.1):

我的问题是:为什么它不起作用?在不依赖自动返回类型扣除的情况下,我可以写什么来获得正确的返回类型?

而且,嗯……这是一个活生生的例子

0 投票
2 回答
530 浏览

c++ - 具有默认模板参数的 C++14 变量模板?

C++14 将允许变量模板:

现在考虑以下情况:

问题:我如何获得pi默认参数?

0 投票
5 回答
3307 浏览

c++ - 测试 lambda 是否是无状态的?

如果 lambda 是无状态的,即它是否捕获任何内容,我将如何进行测试?我的猜测是使用函数指针重载或模板特化的重载解析?

0 投票
3 回答
462 浏览

c++ - 从 lambda 获取捕获的变量?

我想知道,是否有办法获取捕获的 lambda 变量的类型/值?- 使用场景类似;

注意:get_capture_*<N>(lambda)显然应该导致编译器错误,当N > #captured_variables.

如果可能的话,我实际上需要的只是一种以某种方式访问​​捕获的方法。也就是说,我可以自己进行模板元编程。

0 投票
1 回答
500 浏览

c++11 - decltype(auto) vs auto&& 以保存 cv 限定符

使用 c++14 功能 decltype(auto) vs auto&& 来保持 cv 限定符是否有优势?

0 投票
1 回答
2456 浏览

c++ - decltype(auto) vs auto&& 执行函数返回类型的通用处理

用于auto&&处理返回左值的函数时:

v将其视为参考而不是左值的后果是什么?这些结果是否证明使用decltype(auto)代替auto&&来执行函数返回类型的通用处理是合理的?

0 投票
2 回答
3166 浏览

c++ - 具有代理迭代器/引用和自动的容器

我正在实现一个具有类似于以下问题的代理迭代器/引用类型的容器,std::vector<bool>并与以下问题发生冲突,我继续举例说明std::vector<bool>(这个问题不是关于std::vector<bool>!):

  • 有没有办法实现一个代理类型,这样两个静态断言都可以通过?

  • 在实现这样的容器时,是否有关于如何处理这个问题的指导方针?

也许通过使用转换运算符来auto/ auto&/ auto&&/ const auto...

编辑:重新编写示例以使其更加清晰。感谢@LucDanton 在下面的评论。

0 投票
1 回答
551 浏览

c++ - constexpr 基类地址

使用clang 3.4(主干),有没有办法用常量表达式计算基类的位移?

0 投票
1 回答
569 浏览

c++ - 类型到值元函数可以用作 C++14 中的变量别名吗?

在查看 C++14 元函数别名提案(TransformationTraits Redux, v2,N3655)时,我注意到,不仅类型到类型的转换(例如add_const),类型到值的元函数(例如is_void)也是类型别名。(在N3797中不存在)。

别名类型对值元函数有什么好处吗?我认为,可以在没有这些别名的情况下使用它们,例如enable_if_t<is_void<T>::value,T>或者enable_if_t<is_void<T>{}(),T>当存在转换操作时。(我猜is_void<T>::type::value是一样的is_void<T>::value

如果值元函数的类型需要是别名,将它们别名为变量模板会更好吗(我没有 C++14 编译器并且从未使用过变量模板。所以语法可能是错误的)?例如别名is_void

代替

这样就可以enable_if_t<is_void_t<T>,T>不用boost风格写了enable_if,写表达会更容易(egenable_if_t<(is_void_t<T> || is_integral_t<T>),T>