c++1z相关内容

变量模板和std :: cout - 构造顺序

看起来我们可以安全地使用静态存储持续时间的对象的构造函数中使用 std :: cout 对象问题。 但是,我不完全确定我们可以安全地使用它们在变量模板的情况下: #include T x = T {}; void foo() { class Test { public: Test(){std ..
发布时间:2016-10-23 21:48:51 C/C++开发

折叠表达式的关联性

提出的 N4191 fold表达式到C ++。其定义是 (args + ...) 是左折叠(即(((a0 + a1)+ a2)+ ...) ,以及 (... + args) 是一个右折叠(即(... +(a8 +(a9 + a10))) ,修订文件 N4295 问题:什么是理由?这似乎更直观(至少当你使用从左到右的字母表)从左到右评估(args ..
发布时间:2016-10-23 14:03:44 C/C++开发

折叠具有任意可调用的表达式?

查看C ++ 17 论文(和 cppreference ),我很困惑为什么选择只与运营商合作?乍一看,它似乎可以更容易扩展(... + args)只需推一个 + args 的元素之间的标记,但我不相信这是一个伟大的决定。让我们以总和为例: template auto sum(Ts& ... args){ return(args + ... + 0) ..
发布时间:2016-10-23 13:28:49 C/C++开发

C ++中的整数范围 - 当标准不存在时,我该怎么办?

Eric Niebler在他的博客上讨论范围 采访@BjarneStroustrup关于他的想法re C ++ 17 ISO C ++标准委员会(SC 22)提案N4128 公平 - 我没有阅读官方的建议。我只是一个谦卑的C ++程序员,想使用简单的范围功能。我应该怎么做今天而不是后面的C + + 17使用,说,简单的整数范围与步幅?当然,我的要求可能会扩大,因为我开始实际使用范围,但我 ..
发布时间:2016-10-23 12:59:09 C/C++开发

如何在clang ++中使用模块?

模块是可能添加到C ++ 1z的#includes的替代品。 Clang有一个完整的C ++实现。 使用 import std.io; C ++源文件中的 无法正常工作(编译),因为C ++ 1z规范模块(包括语法)不是最终的。 clang文档指出,当传递 -fmodules 标志时,#includes将被重写到他们适当的进口。然而,检查预处理 ..
发布时间:2016-10-22 19:28:39 C/C++开发

我应该如何编写我的C ++为C ++ 17模块做好准备?

已有两个支持C ++模块的编译器 clang:http://blogs.msdn.com/b/vcblog/ archive / 2015/12/03 / c-modules-in-vs-2015-update-1.aspx 现在开始一个新项目时,我应该注意什么,以便能够采用模块功能,当它最终在我的编译器中发布? 是可能使用模块并仍然保持与不支持它的旧编译器的兼容性? 解决 ..
发布时间:2016-10-22 19:01:01 C/C++开发

auto在模板参数中的优点C ++ 17

auto 在(可能)使用C ++ 17引入的模板参数中有什么优点? 当我想实例化模板代码时,它是 auto 的自然延伸吗? auto v1 = constant // v1 == 5,decltype(v1)is int auto v2 = constant // v2 == true,decltype(v2)is bool auto v3 = cons ..
发布时间:2016-10-22 18:05:31 C/C++开发

限制可变参数模板参数

我们可以将可变参数模板参数限制为某种类型吗?即,实现这样的东西(当然不是真正的C ++): struct X {}; auto foo(X ... args) 这里我的意图具有接受可变数量的 X 参数的函数。 最接近的是: p> template auto foo(Args ... args) ..
发布时间:2016-10-22 17:16:18 C/C++开发

了解别名模板

我问了一个问题,其中有多个代码引用: 模板 using void_t = void; 我相信我有一个一般误解别名模板: 您是否在 enable_if_t 或 conditional_t 语句中传递别名模板? 上面的代码只是一次对多个模板参数执行 enable_if_t ? 其次,我相信我对 void_t 的 ..
发布时间:2016-10-20 21:46:46 C/C++开发

C ++ 1z - 检查是否在可变参数模板参数包中传递了类型

我听说过某个地方,使用新的C ++ 1z语法,很容易检查一个类型是否在variadic模板参数包中传递 - 显然你可以使用接近一行长的代码。这是真的?这些相关的功能是什么? (我尝试查看折叠表达式,但我不能看到如何使用它们在该问题...) 这是我如何解决问题在C + + 11供参考: #include template ..
发布时间:2016-10-19 21:47:19 C/C++开发

ang 3.6倍表达左/右

我试图折叠表达式与clang 3.6'--std = c + + 1z',但我不太明白的东西。我测试的功能是: auto minus = [](auto ... args){return(args - ...); }; ... std :: cout ..
发布时间:2016-10-17 11:06:21 C/C++开发