草庐IT

c++ - std::filesystem::directory_iterator 链接器问题 (C++17)

这个问题在这里已经有了答案:LinkerrorsusingmembersinC++17(4个答案)关闭4年前。在尝试使用C++17标准中的std::filesystem::directory_iterator时,我的C++构建出现问题。代码如下:std::vectorIO::getDirectoryList(std::filesystem::path&dirPath){std::vectorfiles;for(auto&file:std::filesystem::directory_iterator(".")){files.push_back(file.path());}returnf

JDK17、IDEA 2022【安装一条龙】

JDK17、IDEA2022安装一条龙一、JDK17安装1.下载JDK172.安装jdk17二、配置环境变量三、IDEA2022安装1.下载IDEA20222.安装IDEA20223.运行第一个程序四、可能遇到的问题本次安装安装环境为:Windows11系统jdk版本为:jdk-17.0.5IDEA版本为:ideaIU-2022.1.2一、JDK17安装1.下载JDK17下载地址:👉下载点我2.安装jdk17双击下载的好的.exe文件二、配置环境变量新建系统变量配置Path😇可直接复制%JAVA_HOME%\bin3.🧪测试环境变量是否配置成功🎊恭喜你,JDK17安装成功了三、IDEA2022

c++ - C++17/C++2a 编译时的哈希类型

考虑以下代码:#include#includetemplateconstexprstd::size_ttype_hash(T)noexcept{//Computeahashforthetype//DOSOMETHINGSMARTHERE}intmain(intargc,char*argv[]){autox=[]{};autoy=[]{};autoz=x;std::cout我希望type_hash函数在编译时返回该类型唯一的哈希键。有没有办法在C++17或C++2a中做到这一点(理想情况下只依赖标准而不依赖编译器内在函数)? 最佳答案

C++ 转换运算符到 chrono::duration - 适用于 c++17 但不适用于 C++14 或更低版本

以下代码使用设置为C++17的gcc7.1.0进行编译,但不使用设置为C++14(或VisualStudio2017)进行编译。在Wandbox上很容易重现.要让它与C++11/14一起工作,必须做些什么?#include#includeintmain(){structConvert{operatorstd::chrono::milliseconds(){std::cout 最佳答案 让我们从为什么这在C++14中不起作用开始。std::chrono::duration有两个相关的c'tors(std::chrono::millis

c++ - C++17 标准是否保证 union 的地址与其成员的地址相同?

我目前正在编写一个池分配器。我的问题归结为以下代码:templateunionmyUnion{Tdata;myUnion*nextUnion;};voidsomeFunction(){myUnionmu;T*t=new(std::addressof(mu.data))T();//somecodemyUnion*mu2=reinterpret_cast*>(t);}mu的地址总是和mu2一样吗? 最佳答案 是的。9.2/19(N4659中为12.2/24):Ifastandard-layoutclassobjecthasanynon-

c++ - N3797 的§8.5 p17(初始值设定项的语义)中是否缺少案例?

对于聚合structS{inti,j;};声明Ss({1,2});和Ss({1});执行直接初始化到N3797§8.5p16:TheinitializationthatoccursintheformsTx(a);Tx{a};aswellasinnewexpressions(5.3.4),static_castexpressions(5.2.9),functionalnotationtypeconversions(5.2.3),andbaseandmemberinitializers(12.6.2)iscalleddirect-initialization.但§8.5p17似乎没有描述它

c++ - C++14/17 项目是否可以使用使用 C++11 标准编译的二进制库,或者源代码是否需要重新编译?

可以在c++14/17项目中使用使用C++11编译的二进制文件吗?c++17项目中的c++14二进制库怎么样?或者是否需要使用与项目相同的标准更新和重新编译源代码?是否有任何其他方法可以在新的标准项目中包含旧的标准C++库? 最佳答案 C++标准与二进制文件格式无关。这仅取决于编译器/链接器和操作系统。因此,如果编译器供应商更改了ABI(应用程序二进制接口(interface)),则不能简单地将各个部分链接在一起。你可以在这里读到,只与gcc相关:https://gcc.gnu.org/onlinedocs/libstdc++/ma

c++ - 为什么有 C++14/17 的网络库提案?

关闭。这个问题需要更多focused.它目前不接受答案。想改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭8年前。Improvethisquestion尽管TCP/UDP/IP是常用的协议(protocol),但我不明白为什么他们希望它成为ISOC++标准的一部分。这些与语言的核心无关。数据结构是普遍需要的工具,因此STL是有意义的,但这些协议(protocol)在IMO中过于具体。

c++ - g++ c++17 类模板参数推导在非常特殊的情况下不起作用

我有以下代码:templateclasslit{public:lit(Tl):val(l){}Tval;};templateclasscat{public:cat(litconst&a,litconst&b):a(a),b(b){}litconst&a;litconst&b;};templatecatoperator+(litconst&a,litconst&b){returncat(a,b);}intmain(){autor1=cat((lit('b')),lit('d'));//compilesautor2=(lit('b'))+lit('d');//doesn'tcompilea

C++11 "enumerated types"(17.5.2.1.2)

引自C++11标准(17.5.2.1.2枚举类型):1SeveraltypesdefinedinClause27areenumeratedtypes.Eachenumeratedtypemaybeimplementedasanenumerationorasasynonymforanenumeration(Suchasanintegertype,withconstantintegervalues(3.9.1)).2Theenumeratedtypeenumeratedcanbewritten:enumenumerated{V0,V1,V2,V3,.....};staticconstenu