问题标签 [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 投票
2 回答
270 浏览

sfinae - SFINAE 用于表达式和 decltype(auto)

我可以将 SFINAE 用于表达式和 decltype auto 混合吗?

0 投票
2 回答
630 浏览

c++ - 在 C++ 中使用显式原型进行返回类型推导

我一直在使用 -std=c++1y 玩 g++ 支持的返回类型推导。
如果您对具有显式返回类型的函数进行原型设计,然后尝试使用返回类型推导来定义该函数,编译器会抱怨一个模棱两可的旧声明:

有充分的理由为什么这不起作用?
我在定义中使用返回类型推导的理由是保持代码干净,但出于自我记录的原因,希望在原型中使用显式类型。关于何时以及何时不使用返回类型扣除的最佳实践建议将不胜感激:)

为了更清楚,我想回答:
1.这是编译器中的实现错误吗?(我很确定不是)
2. 这种扣除方式可以做,但标准提案不允许吗?如果是这样,为什么不呢?
3. 如果这真的是模棱两可的,有哪些例子可以推断出类型并尝试将其与显式前向声明相匹配会给您带来麻烦?
4. 这背后是否存在更深层次的具体实施问题?
5. 仅仅是疏忽吗?

0 投票
2 回答
1388 浏览

c++ - 是否有任何 C++ 语言障碍阻止采用 D 范围?

这是一个 C++/D 交叉问题。D 编程语言的范围——与 Boost.Range 等 C++ 库相比——不是基于迭代器对。官方的C++ Ranges Study Group似乎陷入了制定技术规范的困境。

问题:当前的 C++11 或即将发布的 C++14 标准是否有阻碍采用 D 范围以及适当范围版本的<algorithm>批发的任何障碍?

我不太了解 D 或其范围,但它们看起来很懒惰且可组合,并且能够提供 STL 算法的超集。鉴于他们声称 D 取得了成功,将其作为 C++ 库似乎非常好。我想知道 D 的独特功能(例如字符串混合、统一的函数调用语法)对于实现其范围是多么重要,以及 C++ 是否可以不费力气地模仿它(例如 C++14constexpr似乎与 D 编译时函数评估非常相似)

注意:我正在寻求技术答案,而不是意见 D 范围是否是作为 C++ 库的正确设计。

0 投票
2 回答
6400 浏览

c++ - 为什么 C++11 或 C++14 中没有位置迭代器?

C++98 有front_inserterback_inserterinserter,但在 C++11 或草案 C++14 中似乎没有这些的任何安装版本。有什么技术原因我们不能有front_emplacer,back_emplaceremplacer吗?

0 投票
1 回答
1450 浏览

c++ - 为什么 std::tie 没有标记为 C++14 的 constexpr?

这是我之前的问题“C++14 标准库的哪些部分可能是,哪些部分将被制作constexpr?”的后续问题。和constexpr操作员重载的指南?”

在运行时世界中,为多个数据成员的结构重载的一个很好的习惯用法operator<std::tie是将结构转换为 astd::tuple并搭载在其operator<上执行 Right Thing™(各种成员的字典比较)。

在 C++14 中,很多部分std::tuple都是制作constexpr的,尤其make_tuplestd::get前面提到的operator<. 不过,貌似相关的好像std::tie没有标注constexpr。这很烦人,因为它使得定义可以在编译时进行比较的用户定义的文字类型比必要的更加冗长。

std::tie问题:是否有任何未标记constexpr为 C++14 的技术原因?

更新LWG 问题 2301在 libc++libstdc++ 中实现 bug 65978

更新 2 :在提交 libstdc++ 错误报告 3 小时后由@JonathanWakely 修复

0 投票
5 回答
1677 浏览

c++ - 初始化表达式的每种方式的优缺点是什么?

这是来自Andrei Alexandrescu的一篇文章的启发。

使用以下方法初始化表达式的优缺点是什么?我什么时候应该更喜欢其中一个?

0 投票
1 回答
4755 浏览

c++ - 我们可以在 C++14 中省略 std::array 的双括号吗?

我现在正在阅读 C++14 的标准草案,也许我的法律术语有点生疏,但我找不到任何关于允许初始化的内容,如下所示

是合法的。(编辑:显然以上是 C++11 中的合法语法。)目前在 C++11 中,我们必须将 std::array 初始化为

或者

我想我在某处听说他们正在放宽 C++14 中的规则,以便我们在使用统一初始化时不必使用双括号方法,但我找不到实际的证明。

注意:我关心这个的原因是因为我目前正在开发一个 multi_array - 类型并且不想像初始化它一样

0 投票
1 回答
740 浏览

c++ - 等价于 std::optional 的 const_cast

我的类的接口包括一个可能不存在的对象的访问器。目前,它返回一个可能为空的指针。我想按照这里std::optional的建议替换指针。访问器有一个重载,它使用Meyers 的 const_cast 技巧来避免重复相同的代码两次。const

简而言之,我想替换它:

有了这个:

更换似乎不令人满意,因为:

  1. 它引入了一个分支;
  2. 额外的复杂性在某种程度上违背了使重载成为轻量级(并且被编译器简单地优化掉)的目标。

我假设std::optional引用的专门化基本上可以归结为一个增加安全性的指针,因此想知道是否有某种方法可以保持指针解决方案的简单性。有没有更令人满意的方法来编写要使用的访问器重载std::optional

0 投票
1 回答
2279 浏览

c++ - 类内友元函数的返回类型推导

这是一个关于类内朋友函数的返回类型推导的小实验(在两种情况下都使用 Clang 3.4 SVN 和 g++ 4.8.1 std=c++1y),链接的工作文件中没有记录

活生生的例子

问题:C++14 支持类内友元函数的自动返回类型推导吗?

0 投票
1 回答
307 浏览

c++ - 用户定义的限定符

我考虑了 C++ 的一点语言扩展,并为提案编写了草稿(http://pdfcast.org/pdf/user-defined-type-qualifiers-1)。

这个想法是,用户可以自己定义诸如 const 和 volatile 之类的限定符,以确保某些限定代码(即方法)仅调用相同限定符。

问题是这是否会与任何语言规则发生冲突,或者我是否遗漏了什么。