タグ付けされた質問 「user-defined-literals」

12
ユーザー定義リテラルがC ++に追加する新機能は何ですか?
C ++ 11を導入するユーザ定義リテラル既存のリテラルに基づいて新たなリテラル構文(の導入を可能にするint、hex、string、float任意のタイプのリテラルプレゼンテーションを持つことができるであろうように)。 例: // imaginary numbers std::complex<long double> operator "" _i(long double d) // cooked form { return std::complex<long double>(0, d); } auto val = 3.14_i; // val = complex<long double>(0, 3.14) // binary values int operator "" _B(const char*); // raw form int answer = 101010_B; // answer …

15
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; …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.