2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

UnrealEngineでC++23を使いたい

Last updated at Posted at 2024-08-26

C++23

CEDEC2024にてC++17~C++23の講演がありました。
https://www.docswell.com/s/cpp/5XEY92-cedec2024

さっそくC++23を使いたくなったけど、UnrealEngineが公式サポートしているのはC++20まで。

VisualStudio2022の対応状況は進んでいてSTLはもう使えそう。
https://learn.microsoft.com/en-us/cpp/overview/visual-cpp-language-conformance?view=msvc-170

エンジンビルドもC++23でするのは問題でるかもだけど、自プロジェクトならC++23ビルドしても動くでしょうということで設定方法を調べました。

Build.csを開いて一行書く

Build.csに

CppStandard = CppStandardVersion.Latest;

の一行を足しましょう。
これだけだとインテリセンスがまだC++20です。
cprojファイルを開きNMAKEの追加のオプションにあるオプションを変更しましょう。

/std:c++20 -> /std:c++latest

変更後はslnを閉じて開き直すとインテリセンスもC++23として働いてくれます。

適当なC++23コードを書いてテストします。
join_withを試します。
https://cpprefjp.github.io/reference/ranges/join_with_view.html

void AMyClass::BeginPlay()
{
	Super::BeginPlay();
	std::vector<std::string> hoge = {"aaa", "bbb"};
	for(char h : hoge | std::views::join_with('-'))
	{
		std::cout << h << std::endl;
	}
}

コンソール出力に無事に出ました。
image.png

rangeアダプタで面倒な配列操作が楽になるといいなぁ

あくまで自己責任

UnrealEngineは公式にC++20なので、何かあっても自己責任の精神でいきましょう。
個人プロジェクトで使いなれていくのがいいですね。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?