在Qt Creator中使用C++20

3

我希望在Qt Creator中使用std::source_location,我已经构建了GCC 11.1并使用g++ main.cpp -std=c++20进行了检查。我在Qt Creator中创建了一个kit以使用这个编译器,并通过添加以下内容成功构建:

QMAKE_CXXFLAGS += -std=c++2a

它可以正常工作,我甚至可以进行调试,但Qt一直在说我有一个错误(实际上不是错误,因为构建已经通过):

error: no type named 'source_location' in namespace 'std'

有什么方法可以解决这个问题吗?

所以...为了覆盖我们的基础...你是用#include <source_location>吗? - undefined
1
@StoryTeller-UnslanderMonica 当然,就像我说的那样,我通过终端成功地使用g++编译了它。 - undefined
2
我遇到了相同的问题。这似乎是一个Qt的错误。你可以前往错误位置并将 std::experimental::source_location 替换为 std::source_location。然后在另一个位置会出现另一个错误,只需重复相同步骤(据我记得)。 编辑:刚刚发现这个网址:https://bugreports.qt.io/browse/QTBUG-93270 - undefined
1个回答

4

这篇文章主要是关于Clang静态分析的。GCC(或严格地说是libstdc++)的头文件<source_location>包含以下保护代码:

#if __cplusplus > 201703L && __has_builtin(__builtin_source_location)

由于不支持 __builtin_source_location, 所以该守卫程序不允许 clang 工作。 请参照修复此问题的 clang PR


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接