error: ‘exchange’ is not a member of ‘std’

原因

在編譯 qt-everywhere-src-5.15.7 靜態(tài)的時候,遇到一個error,只能動手查方法了

錯誤

In file included from ../../include/QtCore/5.15.7/QtCore/private/qorderedmutexlocker_p.h:1,
                 from io/qprocess_p.h:65,
                 from io/qprocess.cpp:89:
../../include/QtCore/5.15.7/QtCore/private/../../../../../src/corelib/thread/qorderedmutexlocker_p.h: In constructor ‘QOrderedMutexLocker::QOrderedMutexLocker(QOrderedMutexLocker&&)’:
../../include/QtCore/5.15.7/QtCore/private/../../../../../src/corelib/thread/qorderedmutexlocker_p.h:95:21: error: ‘exchange’ is not a member of ‘std’
   95 |         : mtx1(std::exchange(other.mtx1, nullptr))
      |                     ^~~~~~~~
../../include/QtCore/5.15.7/QtCore/private/../../../../../src/corelib/thread/qorderedmutexlocker_p.h:96:21: error: ‘exchange’ is not a member of ‘std’
   96 |         , mtx2(std::exchange(other.mtx2, nullptr))
      |                     ^~~~~~~~
../../include/QtCore/5.15.7/QtCore/private/../../../../../src/corelib/thread/qorderedmutexlocker_p.h:97:23: error: ‘exchange’ is not a member of ‘std’
   97 |         , locked(std::exchange(other.locked, false))
      |                       ^~~~~~~~
make[3]: *** [Makefile:39413: .obj/qprocess.o] Error 1
make[3]: Leaving directory '/home/wxw/qt-everywhere-src-5.15.7/qtbase/src/corelib'

解決方法:

使用vscode或者其他編輯器,文本文件也行,打開那個報錯的文件:

例如我這個:
/qt-everywhere-src-5.15.7/qtbase/src/corelib/thread/qorderedmutexlocker_p.h

打開后,根據(jù)行號,更改代碼:

原來的代碼

// 原來的代碼
    QOrderedMutexLocker(QOrderedMutexLocker &&other) noexcept
        : mtx1(std::exchange(other.mtx1, nullptr))
        , mtx2(std::exchange(other.mtx2, nullptr))
        , locked(std::exchange(other.locked, false))
    {}

更改之后的代碼

// 更改之后的代碼

// 我還添加了這個頭文件 不知道是否有用
// #include <stddef.h>


    QOrderedMutexLocker(QOrderedMutexLocker &&other) noexcept
        : mtx1(qExchange(other.mtx1, nullptr))
        , mtx2(qExchange(other.mtx2, nullptr))
        , locked(qExchange(other.locked, false))
    {}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容