C++ Now and Tomorrow
2018年7月23日、東京大手町のMorgan StanleyにてC++ Now and Tomorrowが開催されました。
Cities Ckylineをやっていたら家を出るのが遅くなって、16:00開始なのに東京駅に16:37に着きました。そこからOtemachi Financial City South Towerまではすぐについたんですが、受付が大量にあるオフィスビルあるあるに引っかかってさまよいにさまよった挙げ句、会場入りは17:00でした。
入るとBjarne Stroustrup氏が、C++におけるジェネリクスとC++20のconceptの話をしていました。
その後、別の人が金融・株分野での高速な動作の要求される世界の紹介があり、質疑応答、解散、のち個別に質問がありました。
本当は質疑応答でC++のNetworkingと金融の話を聞こうと思ってたんですが時間の関係で私の前の人で打ち切られてしまったのでそれはまあ誰かが聞いてくれるでしょう。
char8_t
型とは
大学の試験が終わったら追記します
別の記事として執筆しました
C++標準化委員会、ついに文字とは何かを理解する: char8_t
char8_t
型はC++20に入りましたね!
問いかけようにも英語力がない
英語は辞書があれば読めるけど、会話とか無理。圧倒的無理。英検2級なんてそんなもん。
まあいくつかキーワードを紙に書いて見せたりしながら質問したんですが。
注意
そういうわけで下記内容はちゃんと私が聞き取れていたのか、一切の保証はありません。
本題
なぜchar8_t
型はC++にないのでしょうか?グダグダな問答はもはや言語化不能なので割愛して整理して紹介します。
char16_t
/char32_t
はUTF-16/UTF-32を保証するためのものではない
C++11でchar16_t
/char32_t
が導入されましたが、これはUTF-16/UTF-32を保証するためのものではなく、16bit、32bitの文字型であることを示すものであると言うのがBjarne Stroustrup氏の主張と思われます。
実際C++規格ではchar16_t
/char32_t
はUTF-16/UTF-32を保証しません。__STDC_UTF_16__
/__STDC_UTF_32__
が定義されているときのみUTF-16/UTF-32を保証します。
するとchar8_t
というのは8bitの文字列型と捉えるべきということになり、それってすでにchar
があるじゃんとなってしまう。
8bitな文字エンコードはUTF-8だけじゃないよね?
Bjarne Stroustrup氏曰く、日本語にはSJISがあるし、そもそもASCIIあるやん。なんでUTF-8だけ?という感じのことを言っていたように思う。
C++がUTF-8に媚をうっちゃまずいとかそういうことだろうか。
文字エンコードの保証はlibraryで
UTF-8を保証するchar8_t
があればC++17で追加されたfilesystem libraryのu8path
みたいにoverloadできないものを作らなくて済むやん?という感じのことを聞いたところ、そういうのはlibraryで。という回答が。
感想
それでもUTF-8を保証する型はほしいので積極的に声を上げ続けて行きたい。
余談
char8_t
ってどう発音すればいいの?なんていう質問をしたら、「ちゃー、エイト、てぃー」と発音してくれた。