C++ Qt不使用C++;14标准图书馆

C++ Qt不使用C++;14标准图书馆,c++,qt,clang,c++14,libc++,C++,Qt,Clang,C++14,Libc++,最近,通过查看std::move的源代码,我发现Qt将我的程序与不支持C++11/14功能的标准库版本相链接: #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES template <class _Tp> inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 typename remove_reference<_Tp>::type&& move(_Tp&

最近,通过查看
std::move
的源代码,我发现Qt将我的程序与不支持C++11/14功能的标准库版本相链接:

#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES

template <class _Tp>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
typename remove_reference<_Tp>::type&&
move(_Tp&& __t) _NOEXCEPT
{
    typedef typename remove_reference<_Tp>::type _Up;
    return static_cast<_Up&&>(__t);
}

#else  // _LIBCPP_HAS_NO_RVALUE_REFERENCES

template <class _Tp>
inline _LIBCPP_INLINE_VISIBILITY
_Tp&
move(_Tp& __t)
{
    return __t;
}

template <class _Tp>
inline _LIBCPP_INLINE_VISIBILITY
const _Tp&
move(const _Tp& __t)
{
    return __t;
}

#endif  // _LIBCPP_HAS_NO_RVALUE_REFERENCES
\ifndef\u LIBCPP\u没有正确的值引用
模板
内嵌(LIBCPP)内嵌(VISIBILITY)LIBCPP(CONSTEXPR)在CXX11之后
typename删除\ U引用::类型&&
移动(&&&t)无例外
{
typedef typename remove_reference::type _Up;
返回静态\u cast(\uu t);
}
#else/\u LIBCPP\u没有正确的值参考
模板
内联\u LIBCPP\u内联\u可见性
_总磷&
移动(\u-Tp&\u-t)
{
返回\uuu t;
}
模板
内联\u LIBCPP\u内联\u可见性
常数&
移动(常数和时间)
{
返回\uuu t;
}
#endif/\u LIBCPP\u没有正确的值\u引用
实际上,宏
\u LIBCPP\u没有正确的值引用
(我在
.pro
文件中使用
CONFIG+=C++14
,但这是库的问题)

我必须重建LBC++,以便使用QC++来使用C++特性(如“正确<代码> STD::移动< /代码>”)?或者我必须改变一些设置


我将Qt5.7与LLVM 7.3.0一起使用。

Qt默认使用您正在使用的任何标准库。这个问题与Qt无关,使用LLVM编译的任何东西都会遇到同样的问题。很可能您的LLVM安装已损坏。

我以前已经看过很多次了。您当前包含libstdc++v4.2或其他内容。您需要添加-stdlib=libc++。然后C++14将开始工作。

它不受支持,看看@JamesCalder我可以使用C++11/14功能,但我使用的是不支持C++11/14的libc++版本。你错了。从Qt5.7开始,编译器应至少支持C++11。所以他们正在使用它。他们使用C++11功能(如移动因子或完美转发)进行了大量重构以优化性能。我怀疑它是否在使用C++11,因为“LIBCPP\u HAS\u NO\u RVALUE\u REFERENCES”的定义可能与此问题相同: