首页 > 解决方案 > 解决 Mac 上 c++20 代码的编译错误

问题描述

我正在尝试将我的机器设置为能够编译 c++20 代码。我有一个简单的示例代码

#include <concepts>                                                                                                                              
#include <iostream>                                                                                                                              
                                                                                                                                                 
template<typename T>                                                                                                                             
requires std::integral<T>                                                                                                                        
auto gcd(T a, T b) {                                                                                                                             
  if(b == 0) return a;                                                                                                                           
  else return gcd(b, a%b);                                                                                                                       
}                                                                                                                                                
                                                                                                                                                 
int main() {                                                                                                                                     
  std::cout << "\n";                                                                                                                             
  std::cout << gcd(100,10) << "\n";                                                                                                              
} 

我试图在 MacOS (11.5.1/BigSur) 上编译。

xcode 版本 - Xcode 12.5.1 构建版本 12E507

clang 版本 - 苹果 clang 版本 12.0.5 (clang-1205.0.22.11)

编译命令

g++ -std=c++20 myfile.cpp

我收到以下错误:

myfile.cpp:25:24: error: 'T' does not refer to a value
requires std::integral<T>
                       ^
myfile.cpp:24:19: note: declared here
template<typename T>
                  ^
myfile.cpp:25:15: error: no member named 'integral' in namespace 'std'; did you mean 'internal'?
requires std::integral<T>
         ~~~~~^~~~~~~~
              internal
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/c++/v1/ios:960:1: note: 'internal' declared here
internal(ios_base& __str)
^
myfile.cpp:26:1: error: expected expression
auto gcd(T a, T b) {
^
3 errors generated

需要帮助。

标签: c++compiler-errorscompilationc++20

解决方案


推荐阅读