Open3

読者コミュニティ|C++23入門 基本編

砂漠砂漠

cabinでのC++23の指定ですが、うまくできません…17で解釈されます。
2章時点でのディレクトリ構造に従った状態で、cabin runを叩くと以下のようになります

◎ cabin run                                                                               □ procon/hello 38% ↓ 12:08
   Compiling hello v0.1.0 (/home/user/procon/hello)
FAILED: /home/user/procon/hello/build/dev/packages/hello/obj/hello/src/main.cc.o 
/usr/bin/c++ '-std=c++17' -O0 -g -MMD -MF /home/user/procon/hello/build/dev/packages/hello/obj/hello/src/main.cc.o.
d '-std=c++23' -c /home/user/procon/hello/src/main.cc -o /home/user/procon/hello/build/dev/packages/hello/obj/hel
lo/src/main.cc.o
/home/user/procon/hello/src/main.cc:1:10: fatal error: print: No such file or directory
    1 | #include <print>
      |          ^~~~~~~
compilation terminated.
ninja: build stopped: subcommand failed.
error: ninja exited with exit status: 1

環境は以下の通りです

  • Linux laptop 6.6.114.1-microsoft-standard-WSL2 #1 SMP PREEMPT_DYNAMIC Mon Dec 1 20:46:23 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux
  • cabin 0.14.0
  • gcc (Ubuntu 13.3.0-6ubuntu2~24.04.1) 13.3.0
  • Ubuntu clang version 18.1.3 (1ubuntu1)
  • ninja 1.11.1
yaito3014yaito3014

GCC で std::println が実装されたのが GCC 14 以降であることは本文にも記載の通りです。
Ubuntu 24 ならば apt で g++-14 をインストールしたうえで cabin.toml に

[toolchain]
cxx = "g++-14"

を追記することでビルドが成功すると思います。

1