草庐IT

element-template

全部标签

c++ - gcc 与 clang : noexcept parsed in unused template specialization when static casting

我正在尝试将函数指针静态转换为特定函数重载,但似乎clang仍会解析(未使用的)模板特化的noexcept语句,从而生成编译器错误。如果未使用相应的函数重载,GCC似乎并不关心noexcept。templatevoidfun(T)noexcept(T(1)){}voidfun(int){}voidfun(int*){}intmain(){inta;fun(&a);//callingworksfinefun(a);static_cast(&fun);//staticcastingdoesn't}https://godbolt.org/z/ixpl3f这里是哪个编译器出错了?当将函数指针转

c++ - "Name The Template Parameter"奇定义

template//whyisboolhere,classbooltype=bool.Aretheyequivalent?structif_{typedeftypenamettype;};templatestructif_//whatdoesthemean?{typedeftypenameutype;};代码来自一篇名为“命名模板参数”的文章。我无法理解both结构的定义。 最佳答案 编辑:首先移动最重要的部分:if_::type;//thisisintif_::type;//thisisdouble这很方便地定义了一个可以在编译时

C++:如何使用 boost::range 查找 max_element?

我正在尝试将迭代器返回到过滤范围内的最大元素。这是我目前所拥有的:#include#include#include#include#includeusingnamespaceboost::adaptors;usingnamespaceboost::lambda;usingnamespacestd;intmain(){vectorx={100,150,200,110};autoit=boost::max_element(x|indexed(0)|filtered(_1>100));/*problemhere*/cout我希望代码打印出vectorx中具有最大元素(即2)的索引,但不幸的是

c++ - 专门化成员 S::display 需要 ‘template<>’ 语法

我正在创建一个特征类来帮助我的程序。我有一个名为operations的模板类包含方法display和area.当我定义这些函数时,我得到了错误。他们在这里:error:specializingmember‘traits::operations::display’requires‘template’syntaxerror:specializingmember‘traits::operations::area’requires‘template’syntax如您所见,编译器要我插入template就在这些定义之前。但是当我这样做时,我会收到一大页错误。出了什么问题,我该如何解决?这是我的程

c++ - 在类型说明符中使用 "simple-template-id"

在C++11标准中,dcl.type.simple和dcl.type.elab部分声明类型说明符可以包括simple-template-编号。另一方面,根据temp.names部分,simple-template-id可以表示函数模板特化。真的可以使用函数模板特化来指定类型吗? 最佳答案 7.1.6.2/2Theothersimple-type-specifiersspecifyeitherapreviously-declareduser-definedtypeoroneofthefundamentaltypes(3.9.1).强调

【好玩儿的Docker项目】利用Matrix+Element打造自己的专属开源聊天室

详情:http://notes.valdikss.org.ru/jabber.ru-mitm/1.前言前阵子有小伙伴对于怎么搭建Matrix有疑问,还专门请咕咕喝咖啡请教==其实Matrix咕咕之前有折腾过,这边就完整分享一下这个项目。PS:这次还包括自己搭建Matrix的客户端——Element(因为国内element似乎被强了,如果你在海外可以直接用官方的Elementapp)Matrix和Element分别是什么?Matrix:Matrix是一个开放的通信协议,用于实时通信,包括即时消息、音频和视频通话。它是去中心化的,这意味着任何人都可以设置自己的Matrix服务器,并与其他Matri

c++ - 为什么bitset要用template来实现?

要定义一个16位的位集,就像这样:std::bitsetbs(0x123);如果让我设计一个bitset类,我大概会这样:mine::bitsetbs(16,0x123);std::bitset是由模板实现的有什么原因吗?这是我们应该在某些情况下应用的好模式吗? 最佳答案 Isthereanyreasonthatstd::bitsetisimplementedbytemplate?Isthisagoodpatternthatweshouldapplyinsomesituations?因为std::bitset被设计成一个静态位集。在

c++ - 错误 : Use of class template requires template argument list

当我尝试运行我的程序时,此错误显示为“errorC2955:'FOURTEEN':useofclasstemplaterequirestemplateargumentlist”#includeusingnamespacestd;templateclassFOURTEEN{private:Ta[n];public:voidReadData();voidDisplayData();};voidFOURTEEN::ReadData(){for(inti=0;i>a.[i];}voidFOURTEEN::DisplayData(){for(inti=0;i>a.[i]P;//Readdatai

c++ - 我可以将 `extern template` 放入头文件中吗?

在头文件中放一个外部模板,然后在单元编译文件中显式模板实例化有效吗?例如在g++的编译示例中,这是为了避免nothing的实例化吗?两次?为什么没有人这样写而更喜欢复制externtemplate每个.cpp文件中的行?A.hpp:#ifndefHEADERC_A#defineHEADERC_Atemplatestructnothing{};externtemplatestructnothing;#endifA.cpp:#include"A.hpp"templatestructnothing;ma​​in.cpp:#include"A.hpp"#includeintmain(){not

c++ - 没有 "predicate"的对 vector 上的 max_element

我想找到pairs的vector的最大元素。我的标准是:最大元素是一对中第二个值最高的元素。我这样做了:automax_angle=std::max_element(begin(angles),end(angles),[](conststd::pair&left,conststd::pair&right){returnleft.second不写谓词是否可以做到?由于它是标准结构,是否有更简单的配对方法? 最佳答案 不,你不能,因为默认情况下std::pair是按字典顺序比较的,这意味着从左到右逐元素。因此,您的解决方案是您可以拥有的