c++14相关内容
我遇到的问题类似于将不同的lambda传递给c ++中的函数模板,但现在使用由 std :: bind 而不是lambda创建的包装器. 我有两个方法 Add 的重载,它们采用不同形式的 std :: function : template结构值{T值};模板无效Add(Value
..
代码: #include#include#include模板struct pfun;模板结构pfun
..
我试图创建一个使用std :: aligned_storage来保存数据的对齐变体类型.有没有办法以constexpr的方式构造对象?我读到你不能做新的constexpr放置. #include#include结构foo{foo(std :: string a,float b):bar1(a),bar2(b){}std :: string bar1;浮条
..
在将adjacency_list中的boost :: vecS用于VertexList时,boost :: depth_first_search(Graph,Visitor)可以编译并正常工作.将VertexList类型切换为boost :: listS时,我收到编译器错误: boost_1_65_0 \ boost \ graph \ detail \ adjacency_list.hpp
..
我知道我可以通过将类的 operator new 设为私有来防止自定义类及其后代的普通堆分配,但是有什么方法可以防止库的用户调用 std::自定义类(或其后代)上的:: make_shared ?显然,仅在类中将 operator new 设置为私有并不能阻止它. 请注意,我不想完全阻止以任何方式创建共享指针,因为我打算仍然能够通过调用静态方法来为自定义类生成 std :: shared_p
..
我想要一个向量,其元素的类型为vector :: size_type 但是,您不能声明: vectoraVec; 因为size_type是模板本身的一部分,所以您必须使用类型本身,我需要类似的东西: vector ::: size_type>aVec; 但是T应该是什么?这确实是一个循环问题.:) 如果
..
为什么没有std :: allocator的数组模板专门化?在c ++ 14中? 在尝试专门研究std :: allocator时,我自己在实现construct()和destroy()方法时遇到了死胡同.是这个原因吗?那么为什么要在std :: allocator中包含Construct()和destroy()部分? 模板类分配器{/
..
要扩展灵活的函数参数,有一种使用 std :: initializer_list 的方法.但是我听不懂.谁能以一种可以理解的方式解释这一点? template自动打印(T值,Args ... args){std :: cout {([[&]
..
我了解了从 std :: async 返回的 future 具有某种特殊的共享状态的原因,通过这种共享状态,等待返回的未来在未来的破坏者中.但是,当我们使用 std :: pakaged_task 时,它的未来不会表现出相同的行为.要完成打包任务,必须从 packaged_task 的 future 对象上显式调用 get(). 现在我的问题是: 将来的内部实现是什么(考虑 std :
..
正如标题所示,此问题已在之前提出.但是,答案与C ++ 03/有关.0x(11).C ++ 11(N3337)谈到变量: [basic]/6 : 变量 是通过声明非静态数据成员或对象以外的引用来引入的.变量的名称表示引用或对象. 这可能意味着变量本质上被命名为对象/引用. 但是,在 C ++ 14 / C ++ 17 ,最后一句话改为 变量名(如果有),表示引用或对象
..
以下3个超载 模板自动foo(){返回1;}模板int foo(){返回2;}模板T foo(){return 3;} 以下疾病是不是形成了? static_cast(& foo)(); Clang选择重载2,而gcc无法编译(演示) 在删除#1过载时,双方都同意选择#2过载(演示)
..
我的代码中出现以下错误: 错误:分配抽象类类型为“材料"的对象 我不知道该如何处理. 我知道 std :: make_unique 执行分配,因此它无法分配 Material 类型的对象,但是我不知道如何纠正它. #include#include结构材料{Material()=默认值;virtual int get_color()con
..
我看到许多工作中的代码,其中人们将emplace和emplace_back与一个临时对象一起使用,如下所示: 结构A {A :: A(int,int);};向量Av;向量 .emplace_back(A(1,2)); 我知道emplace_back的全部要点是能够直接传递参数,如下所示: v.emplace_back(1,2); 但是不幸的是,这对一些人来说还不清楚.但是,我
..
我正在尝试将 [[[deprecated]] 属性引入我的代码库.但是,并不是我需要支持的所有编译器都支持此语法( 此错误似乎表明已定义 __ has_cpp_attribute ,但它不是宏函数.在gcc中有条件地编译 [[[deprecated]] 属性的正确方法是什么? 解决方案 GCC 4.9没有 __ has_cpp_attribute ,并且&& 的短路行为不会扩展到允许
..
#include使用命名空间std;int main(){诠释long long int n,res,x;scanf(“%d",&t);而(t-){scanf(“%lld",& n);res = 0;for(int i = 0; i
..
在下面的代码中,我想找到一种更通用的调用GenericPublish__Advertise()的方式,该方式需要一个可变的模板列表.我该怎么做才能改善它? 我想将主题映射到特定类型的发布者: topic [0]->发布者[0] topic [1]->发布者[1] 如此 虽然代码可以正常工作,但我需要手动编写GenericPublish__Advertise()的模板版本,并手
..
我正在编写一个使用std :: filesystem的库(仅供学习).它可以在MSVC上正常运行,但是默认情况下,Linux的LTS版本(如Ubuntu附带GCC 6.x)和官方存储库中的clang是3.8,它没有std :: filesystem,而我必须使用std :: experimental :: filesystem.如何解决此问题,以便可以支持GCC 6,GCC 8+(其中std ::
..
#include使用std :: vector;int main(无效){向量gr [10];功能(gr);} 我该如何定义通过引用而不是按值调用的函数? 解决方案 以供参考: void foo(vector const(& v)[10]) 如果 foo 要修改实际参数,则没有 const . 要避免使用由内而外的原始C语法进行
..
我正在尝试从可变参数模板类型列表中获取最大的类型.我得到了意外的结果: //两种类型之间更大模板使用Bigger = std :: conditional_t = sizeof(T2),T1,T2>;//递归助手templatestruct BiggestHelper;//2种或更多类型模板
..
结构点{int x = 0;整数y = 10;};点p = {1,};p.x == 1;//真的p.y == 10;//这是真的? 根据初始化列表中标准缺少的元素进行值初始化,因此 y 应该为 int()或 0 ,但它不会似乎没有说在非静态数据成员初始化程序的情况下会发生什么. 编辑:根据回答,显然这是无效的c ++ 11,我想知道c ++ 1y的情况. 解决方案 C ++ 98
..