草庐IT

optional_argument

全部标签

c++ - 这个 'missing template arguments' C++ 错误是什么意思

啊,C++模板...ThecodeIsee,makessensetome,butGCC...itdisagrees.以下代码按预期编译和运行,但如果您取消注释#define,则会出现我不理解的错误。符号iterator仍然只有一件事可以引用:父类(superclass)中的typedef。所以我想我有两个问题:1.错误是什么意思?2.修复它们的最佳方法是什么。#include#include#includeusingnamespacestd;//#defineWITH_TEMPLATE1#ifdefWITH_TEMPLATEtemplatestructMyClass:publicmap

c++ - 脱离的 std::optional<T> 对象的散列是什么?

Thispage来自cppreference提到std::hash已专门用于std::optional,但没有指定对象脱离时的行为。我可以想到不同的行为:它可以抛出std::bad_optional_access,与std::optional::value一致它可以为每个脱离的std::optional返回相同的哈希值,这样2个分离的对象将具有相同的哈希值。它可以返回std::optional>> 最佳答案 C++14CD在[optional.hash]/3中说:Foranobjectooftypeoptional,ifbool(o

c++ - Visual Studio : Command line error D8016: '/Ox' and '/RTC' command-line options are incompatible

我正在使用VisualStudio2012编写C++项目。我在构建项目时尝试使用O2或Ox优化。但它提示了一个错误"cl:命令行错误D8016:'/Ox'和'/RTC'命令行选项不兼容。"我试图从互联网上找到解决方案,但它对我不起作用。希望有人能帮助我。最佳 最佳答案 首先,您的错误代码是错误的。您在发布时可能犯了错误,因为它应该是D8016,而不是D0816。希望您没有犯其他可能误导我们的错误...除此之外,错误信息很清楚:VisualStudio:CommandlineerrorD0816:'/Ox'and'/RTC'comma

c++ - (void*) 和 (void(*)(argument type)) cast 之间有什么区别?

这个问题在这里已经有了答案:WhyarefunctionpointersanddatapointersincompatibleinC/C++?(14个答案)关闭7年前。voidfuncPtr(inta);intmain(){intk=1;void(*funcPtr2)(int);funcPtr2=(void*)(funcPtr);//funcPtr2=(void(*)(int))(funcPtr);(*funcPtr2)(k);return0;}voidfuncPtr(inta){printf("%d",a);}函数指针类型转换中(void*)和(void(*)(argumenttyp

c++ - boost::program_options 位置选项

我有一个位置选项(一个文件名),我希望它成为最后一个选项。用户可以在命令行中传入一堆东西,也可以使用-F作为文件名。但是,我希望用户也能够将文件名放在末尾。例如:./program--var3/path/to/file我目前实现的代码允许调用者将文件名放在命令行的任意位置。有什么方法可以强制位置参数始终位于“常规”参数之后?这是我设置位置参数的方法:pos_opts_desc.add("filename",-1);并解析命令行:store(command_line_parser(argc,argv).options(opts_desc).positional(pos_opts_desc

c++ - boost::program_options 可以使用 "-"以外的定界符吗?

我像这样使用boost::program_options:namespacepo=boost::program_options;po::options_descriptiondesc("Options");desc.add_options()("help,?","ShowOptions")("capture-file,I",po::value(),"CaptureFile")("capture-format,F",po::value()->default_value("pcap"),"CaptureFileFormat")("output-file,O",po::value()->de

c++ - std::optional 中不可复制的容器

我正在尝试将不可复制类型的(STL-)容器打包到std::optional,e。例如:classMyClass{MyClass(constMyClass&)=delete;};std::optional>optContainer;但是编译器(GCC7.2)提示error:useofdeletedfunction'MyClass::MyClass(constMyClass&)'{::new((void*)__p)_Up(std::forward(__args)...);}[...]note:declaredhereMyClass(constMyClass&)=delete;并在type_

序列化异常 : can't locate argument-less serializer

我正在创建一个Kotlin多平台库;实际上我有3个模块(common、jvm和js),在我得到的类路径中:classpath"org.jetbrains.kotlin:kotlin-serialization:${versions.kotlin}"在我的模块中我得到了:common:"org.jetbrains.kotlinx:kotlinx-serialization-runtime-common:${versions.kotlinSerialization}"jdk:"org.jetbrains.kotlinx:kotlinx-serialization-runtime:${ver

序列化异常 : can't locate argument-less serializer

我正在创建一个Kotlin多平台库;实际上我有3个模块(common、jvm和js),在我得到的类路径中:classpath"org.jetbrains.kotlin:kotlin-serialization:${versions.kotlin}"在我的模块中我得到了:common:"org.jetbrains.kotlinx:kotlinx-serialization-runtime-common:${versions.kotlinSerialization}"jdk:"org.jetbrains.kotlinx:kotlinx-serialization-runtime:${ver

c++ - 提升 : dereference a template argument if it's a pointer

如果它是一个指针(或智能指针),我可以使用什么来取消引用模板参数,或者如果它不是,我可以保持原样吗?templatevoidsubf(constT&item){item.foo();}templatevoidf(constT&item){subf(magic_dereference_function(item));}Boost中的任何内容都是一个选项。 最佳答案 templateT&maybe_deref(T&x){returnx;}templateT&maybe_deref(T*x){return*x;}您必须单独为智能指针添加重