问题标签 [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.
c++ - 如果我们在定义中使用“decltype(auto) f()”作为函数声明并带有“decltype(f()) result”会发生什么?
这确实是一个 C++14 问题。而且它的理论多于实践。
有时您会零碎地构建函数的结果:
但是如果你改变返回类型,你也必须改变“a”的类型。我通过一个特殊的声明来解决这个问题:
(对于新手来说:如果函数参数使用 r-value 引用会有什么陷阱?提示:我们需要std::forward
修复它。)一个问题随机出现在我的脑海中:如果我使用新的 C++14 特性“ decltype( auto )
" 作为返回类型?!我们会得到一个递归黑洞吗?还是不允许的错误?将初始化程序添加到“a”会使一切正常吗?
c++ - CRTP和c++1y返回类型推导
我最近在玩 CRTP,当我在使用 c++1y 类型推断的函数时遇到了一些令我惊讶的事情。以下代码有效:
我假设 from 的返回类型Base<Derived>::foo
是decltype
返回的表达式的 a ,但是如果我像这样修改函数foo
:
此代码不再起作用,我收到以下错误(来自 GCC 4.8.1):
我的问题是:为什么它不起作用?在不依赖自动返回类型扣除的情况下,我可以写什么来获得正确的返回类型?
而且,嗯……这是一个活生生的例子。
c++ - 具有默认模板参数的 C++14 变量模板?
C++14 将允许变量模板:
现在考虑以下情况:
问题:我如何获得pi
默认参数?
c++ - 测试 lambda 是否是无状态的?
如果 lambda 是无状态的,即它是否捕获任何内容,我将如何进行测试?我的猜测是使用函数指针重载或模板特化的重载解析?
c++ - 从 lambda 获取捕获的变量?
我想知道,是否有办法获取捕获的 lambda 变量的类型/值?- 使用场景类似;
注意:get_capture_*<N>(lambda)
显然应该导致编译器错误,当N > #captured_variables
.
如果可能的话,我实际上需要的只是一种以某种方式访问捕获的方法。也就是说,我可以自己进行模板元编程。
c++11 - decltype(auto) vs auto&& 以保存 cv 限定符
使用 c++14 功能 decltype(auto) vs auto&& 来保持 cv 限定符是否有优势?
c++ - decltype(auto) vs auto&& 执行函数返回类型的通用处理
用于auto&&
处理返回左值的函数时:
v
将其视为参考而不是左值的后果是什么?这些结果是否证明使用decltype(auto)
代替auto&&
来执行函数返回类型的通用处理是合理的?
c++ - 具有代理迭代器/引用和自动的容器
我正在实现一个具有类似于以下问题的代理迭代器/引用类型的容器,std::vector<bool>
并与以下问题发生冲突,我继续举例说明std::vector<bool>
(这个问题不是关于std::vector<bool>
!):
有没有办法实现一个代理类型,这样两个静态断言都可以通过?
在实现这样的容器时,是否有关于如何处理这个问题的指导方针?
也许通过使用转换运算符来auto
/ auto&
/ auto&&
/ const auto...
?
编辑:重新编写示例以使其更加清晰。感谢@LucDanton 在下面的评论。
c++ - constexpr 基类地址
使用clang 3.4(主干),有没有办法用常量表达式计算基类的位移?
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>