<i id='zd1oJ'><tr id='zd1oJ'><dt id='zd1oJ'><q id='zd1oJ'><span id='zd1oJ'><b id='zd1oJ'><form id='zd1oJ'><ins id='zd1oJ'></ins><ul id='zd1oJ'></ul><sub id='zd1oJ'></sub></form><legend id='zd1oJ'></legend><bdo id='zd1oJ'><pre id='zd1oJ'><center id='zd1oJ'></center></pre></bdo></b><th id='zd1oJ'></th></span></q></dt></tr></i><div id='zd1oJ'><tfoot id='zd1oJ'></tfoot><dl id='zd1oJ'><fieldset id='zd1oJ'></fieldset></dl></div>
  1. <legend id='zd1oJ'><style id='zd1oJ'><dir id='zd1oJ'><q id='zd1oJ'></q></dir></style></legend>

    1. <small id='zd1oJ'></small><noframes id='zd1oJ'>

      <tfoot id='zd1oJ'></tfoot>
      • <bdo id='zd1oJ'></bdo><ul id='zd1oJ'></ul>

      在 msvc 中引用临时文件

      时间:2023-10-06
    2. <legend id='Z5cBZ'><style id='Z5cBZ'><dir id='Z5cBZ'><q id='Z5cBZ'></q></dir></style></legend>

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

            <tfoot id='Z5cBZ'></tfoot>
              <bdo id='Z5cBZ'></bdo><ul id='Z5cBZ'></ul>

                  <tbody id='Z5cBZ'></tbody>
              • <small id='Z5cBZ'></small><noframes id='Z5cBZ'>

              • 本文介绍了在 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 中引用临时文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!

                上一篇:如何将 char* 转换为 LPCWSTR? 下一篇:如何使用 WinDbg 分析 VC++ 应用程序的故障转储?

                相关文章

                最新文章

              • <legend id='5eoDg'><style id='5eoDg'><dir id='5eoDg'><q id='5eoDg'></q></dir></style></legend>

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

                    <small id='5eoDg'></small><noframes id='5eoDg'>

                      <bdo id='5eoDg'></bdo><ul id='5eoDg'></ul>
                    <tfoot id='5eoDg'></tfoot>