c++14相关内容

C ++ constexpr就地对齐存储结构

我试图创建一个使用std :: aligned_storage来保存数据的对齐变体类型.有没有办法以constexpr的方式构造对象?我读到你不能做新的constexpr放置. #include#include结构foo{foo(std :: string a,float b):bar1(a),bar2(b){}std :: string bar1;浮条 ..
发布时间:2021-04-20 18:56:10 C/C++开发

如何阻止使用std :: make_shared< T>

我知道我可以通过将类的 operator new 设为私有来防止自定义类及其后代的普通堆分配,但是有什么方法可以防止库的用户调用 std::自定义类(或其后代)上的:: make_shared ?显然,仅在类中将 operator new 设置为私有并不能阻止它. 请注意,我不想完全阻止以任何方式创建共享指针,因为我打算仍然能够通过调用静态方法来为自定义类生成 std :: shared_p ..
发布时间:2021-04-20 18:56:02 C/C++开发

如何声明vector :: size_type的向量?

我想要一个向量,其元素的类型为vector :: size_type 但是,您不能声明: vectoraVec; 因为size_type是模板本身的一部分,所以您必须使用类型本身,我需要类似的东西: vector ::: size_type>aVec; 但是T应该是什么?这确实是一个循环问题.:) 如果 ..
发布时间:2021-04-20 18:55:59 C/C++开发

为什么从std :: packaged_task和std :: async返回的std :: future不同?

我了解了从 std :: async 返回的 future 具有某种特殊的共享状态的原因,通过这种共享状态,等待返回的未来在未来的破坏者中.但是,当我们使用 std :: pakaged_task 时,它的未来不会表现出相同的行为.要完成打包任务,必须从 packaged_task 的 future 对象上显式调用 get(). 现在我的问题是: 将来的内部实现是什么(考虑 std : ..
发布时间:2021-04-20 18:55:48 C/C++开发

后续:C ++ 14/C ++ 17中的变量到底是什么?

正如标题所示,此问题已在之前提出.但是,答案与C ++ 03/有关.0x(11).C ++ 11(N3337)谈到变量: [basic]/6 : 变量 是通过声明非静态数据成员或对象以外的引用来引入的.变量的名称表示引用或对象. 这可能意味着变量本质上被命名为对象/引用. 但是,在 C ++ 14 / C ++ 17 ,最后一句话改为 变量名(如果有),表示引用或对象 ..
发布时间:2021-04-20 18:55:45 C/C++开发

抽象类和唯一指针

我的代码中出现以下错误: 错误:分配抽象类类型为“材料"的对象 我不知道该如何处理. 我知道 std :: make_unique 执行分配,因此它无法分配 Material 类型的对象,但是我不知道如何纠正它. #include#include结构材料{Material()=默认值;virtual int get_color()con ..
发布时间:2021-04-20 18:55:37 C/C++开发

在emplace()中创建对象时复制省略号

我看到许多工作中的代码,其中人们将emplace和emplace_back与一个临时对象一起使用,如下所示: 结构A {A :: A(int,int);};向量Av;向量 .emplace_back(A(1,2)); 我知道emplace_back的全部要点是能够直接传递参数,如下所示: v.emplace_back(1,2); 但是不幸的是,这对一些人来说还不清楚.但是,我 ..
发布时间:2021-04-20 18:55:33 C/C++开发

__has_cpp_attribute不是“类似于函数"的宏吗?

我正在尝试将 [[[deprecated]] 属性引入我的代码库.但是,并不是我需要支持的所有编译器都支持此语法( 此错误似乎表明已定义 __ has_cpp_attribute ,但它不是宏函数.在gcc中有条件地编译 [[[deprecated]] 属性的正确方法是什么? 解决方案 GCC 4.9没有 __ has_cpp_attribute ,并且&& 的短路行为不会扩展到允许 ..
发布时间:2021-04-20 18:55:27 C/C++开发

映射可变参数模板参数

在下面的代码中,我想找到一种更通用的调用GenericPublish__Advertise()的方式,该方式需要一个可变的模板列表.我该怎么做才能改善它? 我想将主题映射到特定类型的发布者: topic [0]->发布者[0] topic [1]->发布者[1] 如此 虽然代码可以正常工作,但我需要手动编写GenericPublish__Advertise()的模板版本,并手 ..
发布时间:2021-04-20 18:54:42 C/C++开发

不同编译器中的std :: filesystem和std :: experimental :: filesystem问题

我正在编写一个使用std :: filesystem的库(仅供学习).它可以在MSVC上正常运行,但是默认情况下,Linux的LTS版本(如Ubuntu附带GCC 6.x)和官方存储库中的clang是3.8,它没有std :: filesystem,而我必须使用std :: experimental :: filesystem.如何解决此问题,以便可以支持GCC 6,GCC 8+(其中std :: ..
发布时间:2021-04-20 18:52:40 C/C++开发

如何通过引用传递向量数组?

#include使用std :: vector;int main(无效){向量gr [10];功能(gr);} 我该如何定义通过引用而不是按值调用的函数? 解决方案 以供参考: void foo(vector const(& v)[10]) 如果 foo 要修改实际参数,则没有 const . 要避免使用由内而外的原始C语法进行 ..
发布时间:2021-04-20 18:49:23 C/C++开发

部分聚合初始化和非静态数据成员初始化

结构点{int x = 0;整数y = 10;};点p = {1,};p.x == 1;//真的p.y == 10;//这是真的? 根据初始化列表中标准缺少的元素进行值初始化,因此 y 应该为 int()或 0 ,但它不会似乎没有说在非静态数据成员初始化程序的情况下会发生什么. 编辑:根据回答,显然这是无效的c ++ 11,我想知道c ++ 1y的情况. 解决方案 C ++ 98 ..
发布时间:2021-04-20 18:42:48 C/C++开发