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

c++ - Lambda 捕获作为 const 参考?

const是否可以在 lambda 表达式中通过引用捕获?

我希望下面标记的作业失败,例如:

更新:由于这是一个老问题,如果 C++14 中有工具可以帮助解决这个问题,更新它可能会很好。C++14 中的扩展是否允许我们通过 const 引用捕获非常量对象?(2015 年 8 月

0 投票
3 回答
4698 浏览

ide - C++14 支持编辑器/IDE

我正在为 C/C++ 寻找一些强大的编程环境。事实上,我唯一需要的是强大的源导航+创建工具。不管它是免费的还是商业的。我更喜欢一些 linux 工具,但它不一定是必要的 linux 应用程序。

我需要的是某种具有以下功能的编辑器:

  1. 更多打开的文件 + 选项卡/缓冲区切换
  2. 突出显示(+括号匹配,折叠等...)
  3. 保存会话
  4. 预览窗口(当光标停在某个符号上时,我还有一个预览窗口,显示该符号的定义)
  5. 通过代码搜索符号的用途
  6. 智能补全(必须支持c++ 14!)

什么会很好:

  1. 代码美化器或类似的东西
  2. UTF-8 支持
  3. 编辑器模板(例如模块、函数的自动注释标题...)
  4. 其他编辑器脚本
  5. 可从程序访问的终端/控制台 || 编译调试功能(只是为了能够编译整个项目而无需大量切换到命令行)
  6. 程序流可视化

请问全世界有没有人知道任何事情,知道所有这些?

我尝试了几个编辑器/IDE,但它们都遗漏了一些东西。我决定强调缺少对新 c++14 的支持——这可能是现在最大的问题:

  • 虚拟机

    • 惊人的脚本功能
    • 4 和 6:我尝试使用 vim+ctags+cscope 和 vim+gtags + omnicomplete。但它不是那么有用。这不能正常工作。Vim 不知道 c++,也不知道符号上下文。尽管在学习 vim 脚本数小时后我已经能够基本实现所需的行为,但我无法以更复杂的方式使用它。(假设我有全局变量和局部变量,名称相同但不同类型 - vim ofc 无法识别我现在看到的是全局变量还是局部变量。而且我什至没有在谈论命名空间等......)。实际上,VIM 现在在 clang(libclang) 的帮助下支持 c++14,并且有一个很棒的插件叫做 YouCompleteMe,它可以使用 libclang,它的自动完成确实适用于 c++14 代码!它使 vim 成为唯一支持 c++14 的编辑器。. 这个插件现在或多或少可以在更多的编辑器(vim、emacs、sublime)中使用。它添加了自动完成、跳转到定义和错误消息。
    • 支持 c++14
  • 来源洞察

    • 惊人的突出显示功能(突出显示的不同字体令人惊叹(尤其是函数定义标题中的函数名称),也可以分配键盘快捷键以取消字体差异,只保留颜色突出显示(当您对不同的代码对齐感到困扰时) (由于字体不同)
    • 1) 的问题(尽管存在一个名为 TabsSiPlus 的黑客库)
    • 没有终端/控制台
    • 软件不再维护,它不是开源的(甚至不是免费的):(((
    • 缺少 c++14 支持
  • 光滑编辑

    • 惊人的自定义可能性,可以模拟 vim 编辑风格(哇!)
    • 没有终端/控制台(实际上有一个,但不是很好,但是它具有内置的编译功能
    • 它有奇怪的 GUI - 滚动条、不同的窗口标题等占用了大量空间。
    • 它有点贵(与其他人相比)
    • 缺少 c++14 支持
  • Kdevelop4

    • 非常令人愉快的 GUI,漂亮的控制台,非常快,可以模拟 vi 编辑风格(虽然不太好)
    • 错过强制重新扫描/重新标记项目(有时有错误的符号引用,尤其是在较大的项目中 - 这让我很烦恼)
    • 它的预览窗口不显示定义,仅参考定义,然后定义显示在主编辑窗口中.. - 无法立即看到实际代码和符号定义:((
    • 缺少 c++14 支持
    • 环境优美,功能丰富。
    • 没有 ad4),但是它有某种预览气泡。当您将鼠标光标悬停在符号上时,它将显示一个带有符号定义的气泡。它的功能不错,但不幸的是您需要使用鼠标,而且它现在作为单独的预览窗口对用户很友好。
    • 它也有点慢,但我认为这是由于实时语法检查,它可能会被禁用。
    • 缺少 c++14 支持
  • Emacs

    • 通过与 vim(YouCompleteMe) 类似的插件支持 c++14(参见 Vim 部分)。
    • 请一些精通 Emacs 的用户可以填写这个部分吗?
    • 支持 c++14
  • 崇高的文字 3

    • 不是免费的
    • 通过与 vim(YouCompleteMe) 类似的插件支持 c++14(参见 Vim 部分)。虽然我有一些问题。对我来说,插件比 Vim 更不稳定。
    • 通过不同的插件,它支持或多或少与 vim 相同的功能(从用户视图)。
    • 支持 c++14

你们中的任何人是否使用了一些不同的编辑器,可以从上面的列表中执行任何操作,或者可能是一些可以实现所需功能的插件/脚本?

0 投票
2 回答
1589 浏览

c++ - 在哪里可以找到有关 C++ [[deprecated]] 属性的信息

我收到了一个描述C++11 中属性的链接。[[deprecated]]这听起来很方便,我想了解更多关于它的信息——哪些编译器支持它,完整的文档等等。

我花了 20 分钟左右的时间在谷歌上搜索,但除了链接的网站外,我在任何地方都找不到关于此的信息。部分原因是与 C++11 相关的“已弃用”一词的其他用法以及搜索引擎无法识别[[. 我也没有在与各种 SO 答案相关的标准草案中找到这一点。我无法访问完整的付费标准。

有人有关于这个[[deprecated]]属性的更多信息吗?

PS:如果你很好奇,我会用它作为https://stackoverflow.com/a/295229/599884的更好替代品

0 投票
6 回答
1011 浏览

c++ - static_if 会否决模板专业化?

一些常见的模板专业化是这样的:

可以表示static_if为:

这些是直接竞争的功能吗?模板专业化可以做一些static_if不能做的事情吗?似乎static_if可以做模板专业化可以做的所有事情,甚至更多。

顺便说一句:我不太喜欢static_if这种情况,因为它可能使您在任何给定情况下都可以使用界面的哪些部分并不明显。也许模板专业化在某些情况下仍然提供更清晰的语法。

0 投票
1 回答
1550 浏览

c++ - 到目前为止添加到 C++1y 的语言功能

我可以在某处找到迄今为止已被 C++1y 工作文件接受的语言特性列表,最好带有已合并的提案文件的链接?

http://gcc.gnu.org/gcc-4.8/changes.html建议 N3386 (“正常功能的返回类型扣除”)可能已被接受,但我想知道去哪里正式检查(除了手动检查最新的工作草案以查看论文的提议措辞是否已合并)。

0 投票
4 回答
92848 浏览

c++ - C++11:正确的 std::array 初始化?

如果我按如下方式初始化 std::array,编译器会给我一个关于缺少大括号的警告

这解决了问题:

这是警告信息:

这只是我的 gcc 版本中的一个错误,还是故意这样做的?如果是这样,为什么?

0 投票
4 回答
7995 浏览

c++ - 指向类成员的指针作为模板参数

我想使用指向类成员的指针作为模板参数,如下所示:

使用这个结构就好MyStruct<SomeClass, SomeResult, &SomeClass::value> variable了,但我不喜欢我必须指定SomeClassand SomeResult

如果可能的话,我想使用MyStruct<&SomeClass::value> variable它,但不会失去传递任何类并具有任何结果类型的能力。

我尝试了以下方法,但语法是非法的:

错误:模板参数列表过多

我尝试使用辅助函数(实际上在 Clang 中有效,但被 GCC 拒绝):

错误:在函数体外部使用参数“成员”
错误:模板参数 3 无效

是否有可能有一个简单MyStruct<&SomeClass::value>的,如果是这样,如何?

没有解决我的问题的相关问题:

0 投票
7 回答
60340 浏览

c++ - 什么时候应该使用 C++14 自动返回类型推导?

随着 GCC 4.8.0 的发布,我们有了一个支持自动返回类型推断的编译器,它是 C++14 的一部分。使用-std=c++1y,我可以这样做:

我的问题是:我应该什么时候使用这个功能?什么时候需要,什么时候让代码更干净?

方案 1

我能想到的第一个场景是尽可能的。每个可以这样写的函数都应该是。这样做的问题是它可能并不总是使代码更具可读性。

方案 2

下一个场景是避免更复杂的返回类型。作为一个非常简单的例子:

我不相信这真的会成为一个问题,尽管我想在某些情况下让返回类型显式地依赖于参数可能会更清楚。

方案 3

接下来,为了防止冗余:

在 C++11 中,我们有时可以只return {5, 6, 7};代替向量,但这并不总是有效,我们需要在函数头和函数体中指定类型。这纯粹是多余的,而自动返回类型扣除使我们免于这种冗余。

方案 4

最后,它可以用来代替非常简单的函数:

但是,有时我们可能会查看函数,想知道确切的类型,如果那里没有提供它,我们必须转到代码中的另一个点,比如pos_声明的位置。

结论

列出了这些场景,其中哪些实际上被证明是该功能有助于使代码更清晰的情况?我在这里没有提到的场景呢?在使用此功能之前我应该​​采取哪些预防措施,以免它以后咬我?如果没有它,这个功能有什么新东西是不可能的吗?

请注意,多个问题旨在帮助找到回答这个问题的观点。

0 投票
1 回答
828 浏览

c++ - boost Range 库会成为下一个 C++ 标准的一部分吗?

我正在尝试确定是否可以开始在代码中使用基于范围的算法。如果它更有可能成为 c++ 标准的一部分,我可以在新代码中从 boost 中使用它。尽管它看起来比迭代器好得多,但它可能会让其他人难以审查和为项目做出贡献。我在这里的论文列表中没有找到。http://www.meetingcpp.com/

0 投票
2 回答
5518 浏览

c++ - 什么是模板成语?

我正在阅读这篇文章并试图了解N3601是关于什么的。它说这个成语在网络搜索中出现了很多,但我找不到任何东西。是什么

成语,它解决了什么问题,它是如何使用的,什么是隐式模板参数,以及该提案旨在解决什么问题?