草庐IT

copy-initialization

全部标签

c++ - C++ "declaration and initialization"语句是表达式吗?

语言标准说:[Note:Clause5definesthesyntax,orderofevaluation,andmeaningofexpressions.58Anexpressionisasequenceofoperatorsandoperandsthatspecifiesacomputation.Anexpressioncanresultinavalueandcancausesideeffects.—endnote]例如我的代码如下:inti=1;Aobj;那么,上面的两个语句,算作“表达式”吗?有些人在stackoverflow上说“inti=1;”不是一个表达式。这对我来说很奇

c++ - 使用 initializer_list 初始化数组/将 initializer_list 转换为参数包

我需要使用initializer_list来初始化编译时大小的类数组。我已经知道我可以使用参数包构造函数并当场初始化它,但在这种情况下我需要使用initializer_list。如果可能,我还想避免动态初始化数组。这是伪代码:templateclassTest{public:Test(conststd::initializer_listargs):m_tData(args)//当然,对于非常量类型,我可以这样做Test(conststd::initializer_listargs){std::copy(args.start(),args.end(),m_tData);}但是如果我尝试使

c++ - 我如何制作一个允许所有左值引用、右值引用和 initializer_list 的模板化构造函数?

我正在尝试设计一个包含两个大序列vector的类。std::vectorfactory(){returnstd::vector{1,2,3};//itactuallygeneratesalargesequenceofdouble}structmy_class{my_class(conststd::vector&x,conststd::vector&y):m_x(x),m_y(y){}std::vectorm_x;std::vectorm_y;};intmain(){my_classc(factory(),factory());my_classc2(factory(),{0.5,1,1.

c++ - std::initializer_list 变体

以下三种用std::initializer_list初始化的区别是什么?std::vectora{2,3,5,7};std::vectorb({2,3,5,7});std::vectorc={2,3,5,7};在上面的例子中,std::vector只是一个占位符,但我对一般答案感兴趣。 最佳答案 让我们抽象出std::vector.并称之为T.Tt{a,b,c};Tt={a,b,c};Tt({a,b,c});前两种形式是列表初始化(它们之间唯一的区别是如果T是一个类,对于第二个explicit构造函数是禁止调用的。如果一个是被调用,

c++ - 为什么 basic_string::append (iter, iter) 不调用 std::copy?

我刚刚发现在VisualStudioC++2010中,basic_string::append(iter,iter)显然不是通过使用std::copy.第一个问题:现在假设我实现了自己的迭代器类型,并为我的迭代器类型优化了std::copy重载,以便提供更高效的block式复制。除了重载append之外,还有什么方法可以让basic_string::append使用此优化?basic_string::append(iter,iter)是否有可能不进行字符复制?第二个问题(作为我自己实现的起点):以下是否保证有效?std::stringt("JohnB");std::strings;s.

c++ - 如何限制参数类型只允许 std::initializer_list<size_t> 或 std::array<size_t, N>?

我希望只有一个模板函数。所以我想到了……template>||std::is_same_v>>>std::ostream&operator(os,""));returnos;}似乎是因为N在std::array,特化失败。有什么方法可以不为这个用例编写2个函数吗? 最佳答案 如果您不想重载的唯一原因是避免重复函数体,您可以转而编写自己的特征。一种这样的方式:namespacedetails{templatestructwritable:std::false_type{};templatestructwritable>:std::tr

c++ - 我应该担心 C++17 中的 Wmissing-field-initializers 和聚合初始化吗?

我使用启用了-Wall和-Wextra的GCC编译了一些代码。此代码会产生警告:structA{A(int){}};structB{};structC:A,B{};intmain(){(void)C{1};}main.cpp:Infunction'intmain()':main.cpp:11:15:warning:missinginitializerformember'C::'[-Wmissing-field-initializers](void)C{1};^我应该为此担心吗?这是GCC中输出此警告的错误吗?看来我没有要初始化的字段,也没有丢失的参数。 最佳

spring - java.lang.IllegalStateException : ApplicationEventMulticaster not initialized

已结束。这个问题是notreproducibleorwascausedbytypos.它目前不接受答案。此问题是由拼写错误或无法再重现的问题引起的。虽然类似的问题可能是on-topic在这里,这个问题的解决方式不太可能帮助future的读者。关闭8年前。Improvethisquestion尝试使用spring和spring-security运行项目时出现以下错误(在我添加spring安全性之前它正在运行):java.lang.IllegalStateException:ApplicationEventMulticasternotinitialized-call'refresh'bef

spring - java.lang.IllegalStateException : ApplicationEventMulticaster not initialized

已结束。这个问题是notreproducibleorwascausedbytypos.它目前不接受答案。此问题是由拼写错误或无法再重现的问题引起的。虽然类似的问题可能是on-topic在这里,这个问题的解决方式不太可能帮助future的读者。关闭8年前。Improvethisquestion尝试使用spring和spring-security运行项目时出现以下错误(在我添加spring安全性之前它正在运行):java.lang.IllegalStateException:ApplicationEventMulticasternotinitialized-call'refresh'bef

ios - 可变类型 'NSMutableDictionary' 的属性具有 'copy' 属性;将存储一个不可变对象(immutable对象)

我正在使用Xcode9并尝试分析该项目。然后我遇到了以下问题Propertyofmutabletype'NSMutableDictionary'has'copy'attribute;animmutableobjectwillbestoredinstead请通过图片显示分析问题如何解决这个问题? 最佳答案 在Objective-C中,有一个复制方法定义在NSCopying中,另一个是mutableCopy,定义在NSMutableCopying中。NSDictionary(NSMutableDictionary的父类(supercla