草庐IT

has_insertion_operator

全部标签

c++ - 继承与聚合以及 "has-a"与 "is-a"。

在我的代码中,我发现使用类似混合的继承来组合具有不同block的对象很有用。我有:className{public:typedefint32_tvalue_type;public://ctorsanddtorsvoidset_value(value_typevalue){value_=value;}constvalue_type&value()const{returnvalue_;}private:value_typevalue_;};classNamedObject{public:voidset_name(constName&name){name_=name;}constName&n

c++ - std::map.insert "could not deduce template argument for..."

我正在尝试熟悉STL库,但我无法理解我的编译错误。我使用编译器错误字符串“无法推断...的模板参数”搜索了其他问题,但没有一个答案似乎适用或相关。Error4errorC2784:'boolstd::operator&,conststd::unique_ptr&)':couldnotdeducetemplateargumentfor'conststd::unique_ptr&'from'conststd::string'c:\programfiles(x86)\microsoftvisualstudio10.0\vc\include\xfunctional125我正在编写一个简单的解释

c++ - 如何理解函数ostream& operator<< (ostream& os, const unsigned char* s)

对于像这样的函数声明ostream&operator我想知道返回了什么。CPP引用说它返回ostream对象。但为什么它是ostream&而不是简单的ostream?谢谢 最佳答案 运算符返回ostream&(即对ostream对象的可修改引用)而不是拷贝或void的原因是它允许链接,因为实例,以std::cout作为ostream对象的常见示例:unsignedinti=2;std::cout这里我们链接了两个constchar*,一个unsignedint和一个流修饰符,而不必用单独的行将它们分开,这使得阅读和明白了。

c++ - 为什么定义 operator+ 来调用 operator+= 比相反更有效?

这是C++Primer5thEdition中的练习:Exercise14.14:Whydoyouthinkitismoreefficienttodefineoperator+tocalloperator+=ratherthantheotherwayaround?(P.561)鉴于operator+=和operator+的实现:Sales_data&Sales_data::operator+=(constSales_data&rhs){units_sold+=rhs.units_sold;revenue+=rhs.revenue;return*this;}Sales_dataoperat

c++ - 奇怪的异常抛出 - 分配 : Operation not permitted

我想从cin进行异步读取,因此我有一段代码客户端.h...boost::asio::posix::stream_descriptorinput;boost::asio::streambufinput_buffer客户端.cppClient::Client(intargc,char**argv,boost::asio::io_service&io_service):tcp_socket(io_service),udp_socket(io_service),input(io_service,::dup(STDIN_FILENO)){...read_std_input();}voidClie

c++ - 奇怪的运算符重载, "operator T& () const noexcept { return *_ptr; }"

我研究了一下,operator函数的格式是(returnvalue)operator[space]op(arguments){implementation}但是,在std::reference_wrapper实现中,有一个运算符重载函数声明为operatorT&()constnoexcept{return*_ptr;。这个运算符和T&operator()constnoexcept{return*_ptr;不同吗?}?.如果两者不同,那么第一个有什么用? 最佳答案 运算符T&()constnoexcept;是一个user-define

c++ - 重载 "operator++"返回一个非常量,clang-tidy 提示

我刚从clang-tidy收到以下警告:overloaded"operator++"returnsanon-constantobjectinsteadofaconstantobjecttypehttps://clang.llvm.org/extra/clang-tidy/checks/cert-dcl21-cpp.html不幸的是,他们提供的链接不起作用,https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?pageId=88046682没有简单的方法可以准确地找到这个规则(貌似DCL规则是从50开始的)。但是无论我在标准的

c++ - 如果我想让类不可复制, "operator="返回类型是否重要?

假设我有一个不支持成员复制的类,所以我不想保留编译器实现的复制构造函数和赋值运算符。我也不想实现这些,因为要么这样做需要额外的努力,我不需要在我的类里面进行这些操作,或者那些操作在我的类里面没有意义所以我想禁止他们。这样做I'lldeclarethemprivateandprovidenoimplementation:classNonCopyable{private:NonCopyable(constNonCopyable&);//notimplementedanywherevoidoperator=(constNonCopyable&);//notimplementedanywher

c++ - 使用 std::string 时为 "error: no match for ‘operator<<"

你能帮我找出下面代码中的问题吗(代码类似于C++streamasaparameterwhenoverloadingoperator):#include#includeclasslogger{public:voidinit(std::ostream&ostr){stream=&ostr;}templatelogger&operator一切正常,直到我取消注释包含“world”的行。在这种情况下,GCC产生错误:在...中与“operator有意思的是VS2008对这段代码没有问题谢谢! 最佳答案 std::string("world"

c++ - 使用 back_inserter 复制算法

我不明白为什么这段代码是准确的vectorcoll;coll.reserve(2*coll.size());copy(coll.begin(),coll.end(),//zrodloback_inserter(coll)//przeznaczenie);coll.end()表示vector的结束。在我push_back任何东西(如back_insert_iterator所做的那样)之后,coll.end()返回的是与之前相同还是不同的东西?是否有不止一个终止迭代器?为什么即使添加了新内容,end()也可以用作容器的结尾?此外,您无法将代码应用于列表容器-它会卡住。这很重要,因为在vec