草庐IT

constructed

全部标签

c++ - 为什么 std::allocator::construct 和 std::allocator::destroy 在元素类型上模板化?

std::allocator的construct和destroy成员函数根据要构造的元素的类型进行参数化:templateclassallocator{public:typedefTvalue_type;typedefT*pointer;templatevoidconstruct(U*p,Args&&...args);templatevoiddestroy(U*p);...};这样做的理由是什么?他们为什么不选择value_type*或pointer?好像allocator应该只知道如何构造或销毁T类型的对象. 最佳答案 这与all

c++ - std::is_constructible<void()>::value 的正确结果是什么?

std::is_constructible::value的结果不一致.我对该标准的解释是它应该是错误的。然而,Clang,同时具有libc++和libstdc++*,给出了true。GCC和MSVC都给出false。哪个结果是正确的?标准语这是标准的N4527[meta.unary.prop]/7:Giventhefollowingfunctiondeclaration:templateadd_rvalue_reference_tcreate()noexcept;thepredicateconditionforatemplatespecializationis_constructibl

c++ - 如何根据 is_nothrow_move_constructible<T> 声明包装类型 X<T> noexcept 的移动构造函数?

假设我有一个包装类型templatestructX{/*..*/};而且我不能只是X(X&&)=default因为我必须在那里做一些重要的事情。但是,我希望它是noexcept但前提是T(T&&)是noexcept。这可以使用::std::is_nothrow_move_constructible进行测试。我不知道如何根据constexpr有条件地启用构造函数的一个版本或另一个版本。我想可能有一种使用SFINAE的方法,但我不知道如何将其应用于ctors。 最佳答案 noexcept说明符接受任何bool常量表达式,因此您可以直接检

c++ - Clang 问题 : implicit type conversion at construction time

概要我正在努力使C++11代码与Clang兼容,并遇到了GCC>=4.6接受代码而Clang>=3.1不接受的情况。Clang认为候选构造函数不可行。详情这里是一个精简的例子来说明这个问题:#includetemplatestructT;templatestructT{typedefTsuper;constexprT(){}templateT(Args&&...){}};templatestructT:T{typedefTsuper;Headhead;T(Headarg):super(),head(std::move(arg)){}};structvoid_type{constexpr

c++ - libc++ is_copy_constructible 对我来说似乎是错误的

is_copy_constructible的libc++实现是这样的:templatestruct_LIBCPP_TYPE_VIS_ONLYis_copy_constructible:publicis_constructible::type>{};is_copy_constructible的C++规范很简单:std::is_copy_constructiblespecification:std::is_constructible::valueistrue.但是,上面的实现不就是实现了T&const而不是constT&吗?将const应用于add_lvalue_reference应该没有

c++ - basic_string::_S_construct null 无效

我正在从命令行读取输入文件。intmain(intargc,char**argv){ScenemyScene;stringfilename=argv[1];myScene=Parser(filename);...}在另一个文件中,我使用了像这样declerated的解析器函数;SceneParser(stringfilename){stringline;ifstreammyfile(filename.c_str());...returnscene;}我收到错误;在抛出“std::logic_error”的实例后终止调用what():basic_string::_S_constructn

c++ - 为什么 is_copy_constructible 在 MSVC12 中为 unique_ptr 返回 true

我原以为这个静态断言会触发:#include#includeintmain(){static_assert(std::is_copy_constructible>::value,"UPtrhascopyconstructor?");}但事实并非如此。使用MSVC12编译:Microsoft(R)C/C++OptimizingCompilerVersion18.00.31101forx64 最佳答案 static_assert应该触发,std::unique_ptr有一个隐式删除的复制构造函数,所以这是一个错误。这看起来与此错误报告有

c++ - "constructing"一个可以用 memcpy 简单复制的对象

在C++中,这段代码是否正确?#include#includestructT//triviallycopyabletype{intx,y;};intmain(){void*buf=std::malloc(sizeof(T));if(!buf)return0;Ta{};std::memcpy(buf,&a,sizeofa);T*b=static_cast(buf);b->x=b->y;free(buf);}换句话说,*b是一个生命周期开始的对象吗?(如果是这样,它到底是从什么时候开始的?) 最佳答案 这是未指定的,由N3751:Obj

c++ - std::is_constructible on type with non-public destructor

std::is_constructible的预期结果是什么?在具有私有(private)或protected析构函数的类型上?例如,即使只有friend可以释放它,我仍然可以在堆上构造这样一个对象:#includeclassFoo{friendvoidfreeFoo(Foo*);public:Foo(){}private://Destructorisprivate!~Foo(){}};voidfreeFoo(Foo*f){deletef;//deletingafooisfineherebecauseoffriendship}intmain(){Foo*f=newFoo();//dele

php - 未捕获的 PDOException:PDO::__construct():php_network_getaddresses:getaddrinfo 失败:名称或服务未知

在我的AWSEC2服务器中,我有2个项目:连接此RDS数据库的Laravel项目。我没有pb来连接它连接他自己的数据库(也在RDS中)的Wordpress项目,并且还在一个插件中,我添加了一个自定义连接到我的Laravel数据库,这样我就可以轻松地插入数据。这段代码在我在本地主机时有效,但是当我放置真实主机时,它失败了:$capsule->addConnection(array('driver'=>'mysql','host'=>'kendozone.cp90iogazqzc.us-west-2.rds.amazonaws.com','database'=>'mydb','userna