草庐IT

any_variable

全部标签

c++ - 严格指针别名 : any solution for a specific problem?

我遇到了违反严格的指针别名规则引起的问题。我有一个来自模板的类型T和一些相同大小的整数类型Int(与sizeof一样)。我的代码主要执行以下操作:Tx=some_other_t;if(*reinterpret_cast(&x)==0)...因为T是一些可以有构造函数的任意(除了大小限制)类型,我不能将T和Int。(这仅在C++0x中允许,甚至还不被GCC支持)。有什么方法可以重写上述伪代码以保留功能并避免违反严格的别名规则吗?请注意,这是一个模板,我无法控制T或some_other_t的值;分配和后续比较确实发生在模板代码中。(郑重声明,如果T包含任何位字段,则上述代码在GCC4.5上

c++ - 带有 C++ 模板的虚假 "use of local variable with automatic storage from containing function"?

以下代码无法在g++7.2.0中编译templateclassRequest{intcontent=0;public:friendvoidsetContent(inti,void*voidptr){Request*ptr=(Request*)voidptr;ptr->content=i;}intgetContent(){returncontent;}};intmain(){Requestreq;setContent(4,&req);returnreq.getContent();}有错误test.cpp:Ininstantiationof‘voidsetContent(int,void*

c++ - 无法在 boost 1.57 中编译 boost/any_iterator.hpp

在(尝试)升级VS2012项目以使用boost1.57之后,我无法再编译——boost/any_iterator.hpp中出现大量错误消息(见下文)。作为测试,我创建了一个新项目,其中只包含一个空的主函数和#include"boost/any_iterator.hpp"并得到了相同的错误集。这是它提示的代码://snippetfromboost/any_iterator.hpptemplateclasspostfix_increment_proxy>{//...};同一文件中还有另一个类遵循相同的模式并生成相同的错误。range_detail::any_iterator在文件中稍高一点

c++ - Boost.Any 获取原始类型

我需要将any变量转换为原始类型。我需要这样做:inti=10;anya(i);int&i2=any_cast(a);但我希望类型存储在any变量中。我这样写:inti=10;anya(i);a::type_value&i2=any_cast(a);//thereisnoactuallytype_value我怎样才能做这样的事情?或者如何从any变量中提取原始类型?Boost.variant也很方便。如果我做不到,那么我还有一个问题,有什么C++技术和库可以通过函数存储和获取类型来解决这个问题? 最佳答案 C++是一种静态类型的语言

c++ - `boost::any` 和 `std::any` 之间的差异

C++17引入了对象容器std::any,基于boost库boost::any.我的问题是:标准化的any是否等同于boost版本,或者是否存在差异?Asimilarquestionhasbeenpostedaboutvariant,在这种情况下存在一些差异,但我找不到关于any的引用。编辑:我能看到的一个区别是方法emplace的可用性。我对行为和保证之间的差异感兴趣的不仅仅是API的差异。例如,不同的分配对我来说很重要。 最佳答案 I'minterestedtothedifferencesbetweenthebehavioran

c++ - 序列化 variables_map

如何序列化/反序列化boost::program_options::variables_map?我找不到已经实现的序列化函数,而且我不知道variables_map中的哪些函数可以用来提取和重新组装map。 最佳答案 看起来你发现boost::program_options::variables_map派生自std::map所以你可以使用它的序列化(但稍后会看到警告这个)。如果剩下的唯一问题是序列化它包含的boost::any值,那么您就快完成了。你不能序列化一个任意的boost::any,因为它不知道如何操纵它所拥有的东西。但是,

c++ - 后续: What exactly is a variable in C++14/C++17?

如标题所示,thisquestionhasbeenaskedbefore.但是,答案与C++03/0x(11)有关。C++11(N3337)关于变量是这样说的:[basic]/6:Avariableisintroducedbythedeclarationofareferenceotherthananon-staticdatamemberorofanobject.Thevariable’snamedenotesthereferenceorobject.这可能意味着变量本质上是命名对象/引用。然而,在C++14/C++17,最后一句改为Thevariable’sname,ifany,den

c++ - 从字符串/boost::any 映射构建 boost::options

我有一张代表配置的map。这是std::string的map和boost::any.此map在开始时已初始化,我希望用户能够在命令行上覆盖这些选项。我想做的是使用options_description::add_option()从这张map构建程序选项方法。但是,它需要一个模板参数po::value而我只有boost::any.到目前为止,我只有代码的外壳。m_Config代表我的配置类,getTuples()返回std::map.TuplePair是std::pair的类型定义元组包含boost::any我感兴趣。po::options_descriptiondesc;std::fo

c++ - 无法与 typedef 成为 friend : any particular reason?

structA{};typedefAB;structC{friendstructB;};GCC4.7.020110427告诉我error:usingtypedef-name'B'after'struct'.到目前为止,这似乎是不言自明的;毕竟,我的示例代码试图声明并加好友struct称为B,实际上不是struct-key.但是,我必须写friendstructA;如果A实际上是一个复杂的、冗长的模板元黑客,这是不可取的。我是不是遗漏了什么,或者我们实际上可以不friend通过类型别名类型?如果不是,是否有任何特殊原因或者只是语言的怪癖?Thisquestion之前提出过这个问题,但是已

c++ - 类设计: arrays vs multiple variables

我有一些理论问题,但这是我在设计类时有时会遇到的问题,而且我在阅读其他代码时发现它的做法有所不同。以下哪项会更好,为什么:示例1:classColor{public:Color(float,float,float);~Color();friendbooloperator==(Color&lhs,Color&rhs);voidmultiply(Color);//...floatget_r();floatget_g();floatget_b();private:floatcolor_values[3];}示例2:classColor{public://asaboveprivate:floa