spdlog.hを利用したソースコードをVisualStudioでコンパイルすると「error C2338: static_assert failed: 'Unicode support requires compiling with /utf-8'」になる
個人で制作してるツールの中でspdlogというライブラリを利用しているが、 このツールのリポジトリにpushしたときに実行するCIワークフローの中でビルドする際に、 ある時期から以下のspdlog関連のエラーがでるようになった。
C:\path\to\spdlog\include\spdlog\fmt\bundled\base.h(458,28): error C2338: static_assert failed: 'Unicode support requires compiling with /utf-8'
エラー行近辺の処理やspdlog側の変更履歴を見る感じ、どうも下記の修正が影響している様子。
https://github.com/gabime/spdlog/pull/3236
この修正により、VisualStudioでビルドする際はビルドオプションとして /utf-8 の指定が必須になっているようだ。
これ、/utf-8が必須になることにより、 日本語版(cp932)のWindows環境でマルチバイトキャラセット(MBCS)構成でビルドしている既存のプロジェクトが困るケースがあるのでは、という気がする。
/utf-8を指定することにより、文字列リテラルで使っているマルチバイト文字がUTF-8として扱われることになるので、 実行時の文字コードとして従来はCP932(ShiftJIS)を想定して動いていたものがUTF-8になったことによりバグにつながる、 みたいなケースがありそう。
まあ、
文字セットがMBCSである かつ 文字列リテラルの中で日本語を使っている かつ 文字コードをShiftJISで想定している
なんてのはコードベースがわりと古いものだろうし、そういうプロジェクトでspdlogを使う、なんてのは相当レアケースの様な気もするので、現実的に困ることはそんなにないのかも
(修正前のspdlogを使うことで回避することもできるし)
ただ、spdlogをこれから使ってみようという人がVisualStudio環境でお試しで使ってみて、エラーになったからそこで引き返してしまう、みたいなことはありそう。