草庐IT

this-reference

全部标签

c++ - 右值引用是否有reference_wrapper<>?

我想知道如何完成以下操作voidf(string&&s){std::stringi(move(s));/*otherstuff*/}intmain(){std::strings;bind(f,s)();//Error.bind(f,move(s))();//Error.bind(f,ref(s))();//Error.}如何传递右值引用并将其作为右值引用(可能已包装)存储在调用包装器中?我知道我可以手动编写一个类,如std::reference_wrapper具有到T&&的转换函数,但我宁愿避免这种情况并使用标准技术。我按照AProgrammer的建议实现了它:templatestru

c++ - 右值引用是否有reference_wrapper<>?

我想知道如何完成以下操作voidf(string&&s){std::stringi(move(s));/*otherstuff*/}intmain(){std::strings;bind(f,s)();//Error.bind(f,move(s))();//Error.bind(f,ref(s))();//Error.}如何传递右值引用并将其作为右值引用(可能已包装)存储在调用包装器中?我知道我可以手动编写一个类,如std::reference_wrapper具有到T&&的转换函数,但我宁愿避免这种情况并使用标准技术。我按照AProgrammer的建议实现了它:templatestru

C++ 疯狂 typedef : what is the point of allowing this syntax by the Standard?

老熟人:typedefintcute_int;//cute:commonandfamiliarsyntax.这个语法很完美。没问题。现在,当我们可以像上面那样编写typedef时,那么允许这种语法的意义何在:inttypedefcrazy_int;//crazy:uncommonandunfamiliarsyntax.只是为了迷惑程序员?这种语法是否在任何地方都需要(实际上我们已经使用了前一种)?从编译器的角度你怎么看?他们觉得它可爱还是疯狂?还是对编译器根本不重要?顺便说一句,这段代码来自这里:Useoftypenamekeywordwithtypedefandnew如果您想知道这是

C++ 疯狂 typedef : what is the point of allowing this syntax by the Standard?

老熟人:typedefintcute_int;//cute:commonandfamiliarsyntax.这个语法很完美。没问题。现在,当我们可以像上面那样编写typedef时,那么允许这种语法的意义何在:inttypedefcrazy_int;//crazy:uncommonandunfamiliarsyntax.只是为了迷惑程序员?这种语法是否在任何地方都需要(实际上我们已经使用了前一种)?从编译器的角度你怎么看?他们觉得它可爱还是疯狂?还是对编译器根本不重要?顺便说一句,这段代码来自这里:Useoftypenamekeywordwithtypedefandnew如果您想知道这是

c++ - 在成员函数中返回 *this

我最近使用了一个允许以下语法类型的库:MyClassmyObject;myObject.setMember1("stringvalue").setMember2(4.0f).setMember3(-1);显然,这是通过让setter返回MyClass&type;来实现的。像return*this之类的东西。我喜欢这段代码的样子,但我看的不多。发生这种情况时,我通常会怀疑为什么。那么,这是一种不好的做法吗?这样做有什么影响? 最佳答案 这有时被称为NamedParameterIdiom或方法链。这不是坏习惯,它可以提高可读性。考虑从C

c++ - 在成员函数中返回 *this

我最近使用了一个允许以下语法类型的库:MyClassmyObject;myObject.setMember1("stringvalue").setMember2(4.0f).setMember3(-1);显然,这是通过让setter返回MyClass&type;来实现的。像return*this之类的东西。我喜欢这段代码的样子,但我看的不多。发生这种情况时,我通常会怀疑为什么。那么,这是一种不好的做法吗?这样做有什么影响? 最佳答案 这有时被称为NamedParameterIdiom或方法链。这不是坏习惯,它可以提高可读性。考虑从C

c++ - "error: stray '\XXX ' in C++ program": Why does this happen?

我正在用C++编写一个小程序,遇到一个奇怪的错误:src/Makefile/Tool.cpp:42:3:error:stray‘\302’inprogramsrc/Makefile/Tool.cpp:42:3:error:stray‘\240’inprogram我正在用Vim编写这个程序,对应的行(显示隐藏字符)是:>--->---std::vector{"--debug"}$这个问题不是关于解决这个错误的,因为我只需要复制该行并且错误原因就消失了。似乎是某些字符在激活所有相关选项后被Vim隐藏了!问题是可能导致这些错误的原因。 最佳答案

c++ - "error: stray '\XXX ' in C++ program": Why does this happen?

我正在用C++编写一个小程序,遇到一个奇怪的错误:src/Makefile/Tool.cpp:42:3:error:stray‘\302’inprogramsrc/Makefile/Tool.cpp:42:3:error:stray‘\240’inprogram我正在用Vim编写这个程序,对应的行(显示隐藏字符)是:>--->---std::vector{"--debug"}$这个问题不是关于解决这个错误的,因为我只需要复制该行并且错误原因就消失了。似乎是某些字符在激活所有相关选项后被Vim隐藏了!问题是可能导致这些错误的原因。 最佳答案

c# - 术语 "reference"的起源与 "pass-by-reference"

Java/C#语言律师喜欢说他们的语言通过值传递引用。这意味着“引用”是在调用函数时复制的对象指针。同时,在C++中(以及在Perl和PHP中更动态的形式),引用是某个其他名称(或动态情况下的运行时值)的别名。我对这里的词源感兴趣。“引用”一词的早期用途是什么?让我们看看pre-Java,但如果你知道pre-C++的用途,那我也会感兴趣。(我知道词汇会发生变化等,但我只是对历史感兴趣)。 最佳答案 在论文"SemanticModelsofParameterPassing"中有一个术语“引用调用”的早期用法。RichardEFairl

c# - 术语 "reference"的起源与 "pass-by-reference"

Java/C#语言律师喜欢说他们的语言通过值传递引用。这意味着“引用”是在调用函数时复制的对象指针。同时,在C++中(以及在Perl和PHP中更动态的形式),引用是某个其他名称(或动态情况下的运行时值)的别名。我对这里的词源感兴趣。“引用”一词的早期用途是什么?让我们看看pre-Java,但如果你知道pre-C++的用途,那我也会感兴趣。(我知道词汇会发生变化等,但我只是对历史感兴趣)。 最佳答案 在论文"SemanticModelsofParameterPassing"中有一个术语“引用调用”的早期用法。RichardEFairl