<i id='3jN11'><tr id='3jN11'><dt id='3jN11'><q id='3jN11'><span id='3jN11'><b id='3jN11'><form id='3jN11'><ins id='3jN11'></ins><ul id='3jN11'></ul><sub id='3jN11'></sub></form><legend id='3jN11'></legend><bdo id='3jN11'><pre id='3jN11'><center id='3jN11'></center></pre></bdo></b><th id='3jN11'></th></span></q></dt></tr></i><div id='3jN11'><tfoot id='3jN11'></tfoot><dl id='3jN11'><fieldset id='3jN11'></fieldset></dl></div>
  • <tfoot id='3jN11'></tfoot>

      <small id='3jN11'></small><noframes id='3jN11'>

      1. <legend id='3jN11'><style id='3jN11'><dir id='3jN11'><q id='3jN11'></q></dir></style></legend>
        • <bdo id='3jN11'></bdo><ul id='3jN11'></ul>

        在 msvc 中引用临时文件

        Reference a temporary in msvc(在 msvc 中引用临时文件)

        <legend id='jaO4l'><style id='jaO4l'><dir id='jaO4l'><q id='jaO4l'></q></dir></style></legend>

            • <bdo id='jaO4l'></bdo><ul id='jaO4l'></ul>
              <i id='jaO4l'><tr id='jaO4l'><dt id='jaO4l'><q id='jaO4l'><span id='jaO4l'><b id='jaO4l'><form id='jaO4l'><ins id='jaO4l'></ins><ul id='jaO4l'></ul><sub id='jaO4l'></sub></form><legend id='jaO4l'></legend><bdo id='jaO4l'><pre id='jaO4l'><center id='jaO4l'></center></pre></bdo></b><th id='jaO4l'></th></span></q></dt></tr></i><div id='jaO4l'><tfoot id='jaO4l'></tfoot><dl id='jaO4l'><fieldset id='jaO4l'></fieldset></dl></div>

                <tbody id='jaO4l'></tbody>

                1. <tfoot id='jaO4l'></tfoot>

                  <small id='jaO4l'></small><noframes id='jaO4l'>

                  本文介绍了在 msvc 中引用临时文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  为什么这会在 MS Visual C++ 上编译?

                  Why does this compile on MS Visual C++?

                  struct myClass{};
                  
                  void func(myClass& arg){}
                  
                  void main() {
                     func( myClass() );  // works even though func only takes myClass& 
                  }                      // (not const myClass&!!)
                  

                  这是否也适用于其他编译器,或者是特定于 MSVC 的(甚至是编译器错误?).我什至可以像这样获得这个右值的引用:

                  Does this work on other compilers as well or is this MSVC specific (or even a compiler bug?). I can even get the reference on this rvalue like this:

                  void func(myClass* arg){}
                  
                  int main() {
                      func( &myClass() ); 
                  }
                  

                  这仅适用于使用构造函数临时创建的对象.这不适用于任何其他右值,例如 (myClass() + myClass()) ..

                  This works ONLY on Objects that are temporarily created with a constructor. This wouldn't work with any other rvalue like (myClass() + myClass()) for example..

                  推荐答案

                  它可以编译是因为 MSVC 有一个非标准兼容的扩展",允许将非常量引用绑定到临时文件.

                  It compiles because MSVC has a non-standard compliant "extension" that allows binding non-const references to temporaries.

                  第一个示例不应在符合标准的编译器上编译.

                  The first example should not compile on a standards compliant compiler.

                  在第二个示例中,您将使用临时地址来设置指针的值.这也应该导致错误.

                  In the second example, you are taking the address of a temporary to set the value of a pointer. This should also result in an error.

                  Clang 3.2 产生:

                  Clang 3.2 produces:

                  错误:获取类型为 'Foo' [-Waddress-of-temporary] 的临时对象的地址

                  error: taking the address of a temporary object of type 'Foo' [-Waddress-of-temporary]

                  而 GCC 4.7.3 产生

                  while GCC 4.7.3 produces

                  错误:取临时地址[-fpermissive]

                  error: taking address of temporary [-fpermissive]

                  这篇关于在 msvc 中引用临时文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

                  相关文档推荐

                  Consistent pseudo-random numbers across platforms(跨平台一致的伪随机数)
                  Vary range of uniform_int_distribution(改变uniform_int_distribution的范围)
                  What is a seed in terms of generating a random number?(就生成随机数而言,种子是什么?)
                  Is 1.0 a valid output from std::generate_canonical?(1.0 是 std::generate_canonical 的有效输出吗?)
                  Getting big random numbers in C/C++(在 C/C++ 中获取大随机数)
                  What is the best way to generate random numbers in C++?(在 C++ 中生成随机数的最佳方法是什么?)
                  <legend id='LYjTY'><style id='LYjTY'><dir id='LYjTY'><q id='LYjTY'></q></dir></style></legend>

                    • <small id='LYjTY'></small><noframes id='LYjTY'>

                    • <i id='LYjTY'><tr id='LYjTY'><dt id='LYjTY'><q id='LYjTY'><span id='LYjTY'><b id='LYjTY'><form id='LYjTY'><ins id='LYjTY'></ins><ul id='LYjTY'></ul><sub id='LYjTY'></sub></form><legend id='LYjTY'></legend><bdo id='LYjTY'><pre id='LYjTY'><center id='LYjTY'></center></pre></bdo></b><th id='LYjTY'></th></span></q></dt></tr></i><div id='LYjTY'><tfoot id='LYjTY'></tfoot><dl id='LYjTY'><fieldset id='LYjTY'></fieldset></dl></div>

                      • <bdo id='LYjTY'></bdo><ul id='LYjTY'></ul>
                            <tfoot id='LYjTY'></tfoot>
                              <tbody id='LYjTY'></tbody>