Python
Java
PHP
IOS
Android
Nodejs
JavaScript
Html5
Windows
Ubuntu
Linux
像结构成员一样访问 C++14 lambda 捕获
AFAIK C 11 14 不允许在定义 lambda 时就地定义新的返回类型 然而 C 14 lambda 捕获表达式似乎本质上创建了一个带有一个或多个 成员 和一个运算符 的匿名类型 那么 为什么编译器不允许访问捕获的成员outside
c
Lambda
Capture
c14
强制编译器选择以 const T& 作为参数的复制构造函数
我正在编写一个类 其中有模板化构造函数和复制构造函数 每次我想使用非常量对象调用复制构造函数时 都会选择模板化构造函数 如何强制编译器选择复制构造函数 这是 mcve include
c
c14
copyconstructor
使用别名模板时无法将 `std::unique_ptr` 分配给 clang 中的基类
以下代码在 gcc 4 9 3 和 clang 3 7 1 上编译并运行得很好 std unique ptr include
c
Clang
c14
默认在 Sublime Text 3 中将程序编译为 c++ 14
我知道我们可以使用 g 编译器将程序编译为 C 但g 编译器默认为98版本 要将其作为 C 14 运行 我们需要添加 std c 14在终端 Sublime Text 因其轻量级和功能而被认为是竞争性编程中有价值的编辑器 在这些比赛中 时间
c
Compilation
sublimetext3
sublimetext
c14
未命名命名空间内名称的外部链接
根据C 标准第3 5 4条 未命名的命名空间或直接或间接声明的命名空间 在未命名的命名空间内具有内部链接 同时在第 7 3 1 1 段中我们有注释 96 尽管未命名命名空间中的实体可能具有外部链接 它们通过其翻译特有的名称进行有效限定 单元
c
c14
unnamednamespace
使用“void_t”检查类是否具有具有特定签名的方法
此刻 我是使用此方法检查类是否具有具有特定签名的方法 参加后Walter E Brown 的元编程 CppCon2014 演讲 我开始想知道是否void t可以在这种特殊情况下使用 以使代码更清晰 更具可读性 但是我很难思考void t 到
c
templates
void
templatemetaprogramming
c14
性能差异:std::accumulate vs std::inner_product vs Loop
今天 我想分享一些在我尝试实现这个简单操作时令我震惊的事情 我发现执行相同操作的不同方法 通过使用std inner product 实现谓词并使用std accumulate功能 使用 C 风格的循环 我想通过使用 Quick Bench
c
STL
c14
profiling
languagelawyer
从 lambda 中获取捕获的变量?
我想知道是否有办法获取 lambda 捕获的变量的类型 值 使用场景是类似的 int a 5 auto lamb a return a static assert std is same
c
C11
Lambda
c14
constexpr 求值分支/ constexpr 重载
设置 我有一个使用 SIMD 内在函数的函数 并且想在一些 constexpr 函数中使用它 为此 我需要将其设为 constexpr 但是 SIMD 内在函数未标记为 constexpr 编译器的常量求值器无法处理它们 我尝试用具有相同功
c
c14
SIMD
constexpr
intrinsics
枚举类型布局与其基础类型兼容吗?
我正在翻看n3690 即将出台的草案C 14标准 我在部分中看到7 2段落9 如果两个枚举类型具有相同的基础类型 则它们是布局兼容的 但是 我找不到任何说明枚举类型与其基础类型布局兼容的内容 对我来说 考虑到 底层类型 含义的合理语义 这似
c
enums
languagelawyer
c14
C++17 之前的函数交错
看看这个简单的函数调用 f a b 根据标准 调用顺序为a and b 未指定 C 17 有附加规则不允许a and b 交错 据我所知 在C 17之前 没有这样的规则 现在 看看这个简单的代码 int v 0 int fn int t v
c
C11
c14
languagelawyer
C17
在通用 lambda 中使用模板参数
GCC允许使用以下语法作为扩展 a functional object that will add two like type objects auto add
c
Lambda
c14
C20
从 unique_ptr
初始化shared_ptr
后续this问题 最近我一直在处理一些指向 C 风格数组的智能指针 我最终做了推荐的事情并使用指向向量的智能指针代替 但在那段时间 我得到了一些建议 不要使用shared ptr
c
sharedptr
c14
uniqueptr
使用 std 类型的 ADL 无法找到运算符
下面的代码无法编译 namespace A using C std vector
c
c14
C++14 中不指定对象的左值
我在这里使用 N3936 作为参考 如果 C 14 文本有任何不同 请更正此问题 3 10以下左值和右值我们有 每个表达式都属于该分类中的基本分类之一 左值 x值或纯右值 然而 定义lvalue reads An lvalue 指定一个函数
c
languagelawyer
c14
lvalue
initializer_list 不可变性质导致过度复制
为什么可以访问std initializer list不允许我们更改其内容 这是一个很大的缺点std initializer list当将它用于其主要目的 初始化容器 时 因为它的使用会导致过多的复制构造 复制赋值 而不是移动构造 移动赋值
c
C11
movesemantics
c14
initializerlist
哪个编译器(如果有)在参数包扩展中存在错误?
在尝试以容器形式访问元组的便捷方法时 我编写了一个测试程序 在 clang 3 9 1 和 apple clang 上 它按预期进行编译 产生预期的输出 1 1 foo 2 在 gcc 5 4 6 3 上 无法编译
c
c14
languagelawyer
variadictemplates
再次迭代元组...
我从事 C 工作已经有一段时间了 但我对模板并不熟悉 最近 我尝试编写一个类来包装std vector
c
templates
variadictemplates
c14
实现 C++14 make_integer_sequence
我尝试实施C 14别名模板make integer sequence 这简化了类模板的创建integer sequence template lt class T T I gt struct integer sequence typedef
c
gcc
C11
c14
使用结构标识符来表示 POD 类型和 C 结构
考虑下面的代码 struct Foo template
c
C11
struct
visualstudio2013
c14
«
1 ...
14
15
16
17
18
19
20
»