C ++でのコンパイル時文字列の便利な宣言
C ++でのコンパイル時に文字列を作成および操作できることには、いくつかの便利なアプリケーションがあります。C ++でコンパイル時の文字列を作成することは可能ですが、文字列を可変長文字列として宣言する必要があるため、プロセスは非常に面倒です。 using str = sequence<'H', 'e', 'l', 'l', 'o', ',', ' ', 'w', 'o', 'r', 'l', 'd', '!'>; 文字列連結、部分文字列抽出などの操作は、文字シーケンスの操作として簡単に実装できます。コンパイル時の文字列をより便利に宣言することは可能ですか?そうでない場合、コンパイル時の文字列の便利な宣言を可能にする作業の提案はありますか? 既存のアプローチが失敗する理由 理想的には、コンパイル時の文字列を次のように宣言できるようにしたいと思います。 // Approach 1 using str1 = sequence<"Hello, world!">; または、ユーザー定義のリテラルを使用して、 // Approach 2 constexpr auto str2 = "Hello, world!"_s; どこdecltype(str2)だろうconstexprコンストラクタを。アプローチ1の厄介なバージョンは、次のことができるという事実を利用して実装することが可能です。 template <unsigned Size, const char Array[Size]> struct foo; …