草庐IT

初始化OpenStack

全部标签

c++ - g++ 4.8.2 在列表方法参数默认初始化时出错

我在尝试c++11的新特性时发现了一个问题。这是我的代码:#include#include#includeusingnamespacestd;classA{public:intf(lista,listb={}){coutl{"hello","world"};a.f(l);return0;}执行停留在“Thisline!!!”线。我继续调试,看起来问题就在这里。/**Returnsthenumberofelementsinthe%list.*/size_typesize()const_GLIBCXX_NOEXCEPT{returnstd::distance(begin(),end());

c++ - 统一和值(value)初始化

这个问题在这里已经有了答案:g++4.9rejectsvalidaggregateinitializationinC++14(1个回答)关闭7年前。我尝试对构造函数使用值初始化的成员使用值初始化(我不知道我是否真的使用了好的术语......)所以...当我定义:structA{inta_;};我可以使用:Aa{5};assert(m.a_==5);但是,如果我想使用成员大括号初始化器和初始化列表构造器structB{intb_{1};};这无法编译(c++14:http://ideone.com/MQ1FMU):Bb{2};这里是错误:prog.cpp:19:7:error:nomat

c++ - 委托(delegate)复制构造函数和常量数据初始化

我有一个类A,它有很多数据成员,其中一些是常量。所有数据成员都有适当的复制构造函数,所以我想为我的类默认一个复制构造函数:classA{public:A():a(1){}A(constA&op)=default;private://...Lotsofconstantandnon-constantmemberdata...constinta;};然后,我想编写一个构造函数,它接受对A的引用和一个应该初始化常量数据成员之一的值:A(constA&op,constinta_);这里op应该被复制,而a应该在之后用a_初始化或者不是复制。我想通过委托(delegate)给复制构造函数来避免手动

c++ - clang:从互斥锁初始化锁引用

这个程序是clang编译的:#includeintmain(){std::mutexmtx;conststd::lock_guard&lock(mtx);return0;}其他主要编译器拒绝它(我已经尝试过gcc、msvc和icc)。这是来自gcc的错误消息:error:invalidinitializationofreferenceoftype‘conststd::lock_guard&’fromexpressionoftype‘std::mutex’其他人给出了类似的错误。clang是对还是错?这可以用一个不涉及库类的更简单的例子来重现吗?我试过了,但没有用。编辑这似乎是最小的复制

c++ - 标准库中聚合可初始化性的类型特征?

C++标准库有std::is_constructible检查是否可以从给定类型作为参数构造类。例如,如果我有一个类MyClass它有一个构造函数MyClass(int,char),然后std::is_constructible::value将是true.是否有类似的标准库类型特征来检查聚合初始化是否有效,即MyClass{int,char}格式正确并返回MyClass?我的用例:我想写一个函数模板来转换std::tuple使用聚合初始化的(通常是POD)类,具有以下签名:templateinlineClassto_struct(std::tuple&&tp);为了防止用户使用无效的Cl

c++ - 静态初始化

上下文我正在做一个有一些“模块”的项目。我在这里所说的模块是一个简单的类,它实现了特定的功能并派生自强制接口(interface)的抽象类GenericModule。future应该会添加新模块。一个模块的多个实例可以同时加载,也可以不加载,具体取决于配置文件。我认为如果future的开发人员可以通过简单的一行将他的模块“注册”到系统中,那就太好了。或多或少与他们在googletest中注册测试的方式相同。上下文²(技术)我正在使用visualstudio2005构建项目。代码完全在一个库中,除了main()是在一个exec项目中。我想保持这种状态。我的解决方案我从他们对googlet

c++ - 列表初始化编译错误

C++11标准8.5.4列表初始化示例说:std::mapanim={{"bear",4},{"cassowary",2},{"tiger",7}};但是我已经尝试过VC10、gcc4.6和Comeau,这些编译器都不会让这个通过吗?这是为什么? 最佳答案 感谢评论中的所有回答。然后我检查了c++98和03标准,是的,8.5.4绝对是c++11中的新版本!这就是为什么它没有得到所有编译器的完全支持。在使用gcc4.6.1添加标志-std=c++0x后,现在编译正常。为任何可能需要引用的人添加测试代码:#include#include

c++ - 使用整数常量 0 初始化实例,但没有其他常量值或整数变量

我想定义一个类,它的实例可以从整数常量零构造、隐式构造或赋值,但不能从任何其他数字常量,也不能从整数类型的变量(即使它的值恰好是运行时为零)。它也应该可以从同一类的其他实例复制构造。只要g++4.6和MSVC2010都支持(在适当的模式下),就可以使用C++11功能。具体地,给定classX{/*...*/};voidfn(X);这些都应该编译:Xa(0);Xb=0;Xc;c=0;Xd=a;Xe;e=a;fn(0);但这些不应该:Xf(1);Xg=1;Xh;h=1;fn(1);intii=23;Xa(ii);Xj=ii;Xk;k=ii;fn(ii);我试过了,但是没用:classX{p

初始化对象类型构造函数Oracle

我正在Oracle开发数据库。我已经创建了一个supertype,答案和一个子类型,封闭_answer。我添加了一个字段“类型”来区分它们,但是我希望该字段在构造函数中初始化,以便在该表中插入元组时不要插入此字段。我已经尝试过,但是当我在表Cleast_answer中插入元组时,我必须指定类型,但我不应该。我在哪里错了?createtypeanswertypasobject(idinteger,textvarchar2(50),typevarchar2(25),constructorfunctionanswertyp(selfinoutnocopyanswertyp,textvarchar2)

C++11;非静态数据成员初始化可以访问其他数据成员吗?

我真的很喜欢C#中的属性的想法,并且作为一个小的副项目,我一直在修补在C++中实现它们的想法。我遇到了这个例子https://stackoverflow.com/a/5924594/245869这看起来相当不错,但我忍不住认为lambda表达式和非静态数据成员初始化可能使使用一些非常好的语法来实现这个想法成为可能。这是我的实现:#include#includeusingnamespacestd;templateclassproperty{public:property(functiongetter,functionsetter):getter_(getter),setter_(sett