問題タブ [user-defined-literals]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - C++11 のユーザー定義リテラルは通常の型キャストより遅いですか?
1)実行時にこれらのいずれかが他のものよりも高速ですか? どれとなぜ?
2) これはコンパイル時または実行時に発生しますか?
編集: constexprを使用すると役立ちますか?
c++ - C ++の固定幅整数リテラル?
C++11 では、ユーザー定義リテラルを使用して新しいリテラルを C++ に定義するためのサポートが最初に導入されました。C++11 以降では、 の型の固定幅整数リテラルの接尾辞も事前定義されてい<cstdint>
ますか?
c++ - char[] をテンプレート化されたリストに変換
最近、ユーザー定義のリテラル、特にテンプレート化された可変長文字配列の種類に出くわしました。
constexpr
通常の関数でこれを行う方法はありますか?
このようなもの:
これにより、複数のパラメーターと通常の構文が可能になります。
テンプレート化された可変長文字配列を通常の関数のパラメータ トリックとして実行する方法 (または同様の効果を達成する方法) はありますか?
c++ - C++11 - char[] からのユーザー定義の文字列演算子のオーバーロード
ユーザー定義リテラルについて読んで、 から文字列リテラル オーバーロードを定義することについて、なんとなくあいまいであることに気付きますchar[]
。
間違いなく正しい方法は次のとおりです
しかし、実際には次のようなもののタイプ"hello"
はconst char (&)[N]
(どこN
に長さがあります)です。だから、このような代替アプローチがあるのだろうか
しかし、コンパイラ(Ubuntu 14.04のg ++ 4.8)でエラーが発生しました
std::size_t
次に、未使用のパラメーターを正しい方法から削除しようとしましstd::string operator "" _s (const char* m)
たが ( )、エラーが発生しました
一次リテラルが achar[]
または aの場合、長さをパラメータとして持つことは必須wchar_t[]
ですか?
c++ - ユーザー定義リテラルのメンバー使用時のコンパイル エラー
このコードをコンパイルするとき (ヘッダーなし)
コンパイラ (Ubuntu 14.04 の g++ 4.8 と clang++ 3.4 の両方) は、
_f.temp
は接尾辞として考えられているようです。コンパイラがドットで停止するのではなく、そのように解析するのはなぜですか?
c++ - 文字列リテラルの代わりに文字列にユーザー定義リテラルを使用する利点
SO ドキュメントの文字列のトピックでは、備考セクションで次のように述べていました。
C++14 以降、 を使用する代わりに、文字列リテラルと同様に、 を に変換するを
"foo"
使用することをお勧めします。"foo"s
s
const char *
"foo"
std::string
"foo"
私が使用して見る唯一の利点
それ以外の
最初のケースでは、コンパイラはコピー省略を実行できます (私が思うに)。これは、2 番目のケースでのコンストラクター呼び出しよりも高速です。
それにもかかわらず、これは (まだ) 保証されていないため、最初のものはコンストラクター (コピー コンストラクター) も呼び出す可能性があります。
次のようなリテラルを使用する必要がある場合を無視するstd::string
std::string
リテラルの代わりにリテラルを使用する利点はありconst char[]
ますか?
c++ - 文字列のユーザー定義リテラルをコンパイル時にチェックする方法はありますか?
string
月の名前を数字に変換するユーザー定義リテラルを作成しています。このリテラルの予想される使用法は次のようなものです
を返す必要があり11
ます。
現時点で私のコードは次のようになります
whereconstexpr int convert_month_to_int(const char, size_t)
は実際の変換を行う関数です (-1
月名が間違っている場合は戻ります)。
問題は、このリテラルに渡された文字列がどの月にも名前を付けていない場合、ある種のコンパイル エラーを表示したいということです。私static_assert
は次の方法で使用してみました:
convert_month_to_int(str, len)
しかし、コンパイラはそれが定数式になるかどうかわからないため、これは機能しません。
この動作を達成する方法はありますか?
c++ - テンプレート リテラル演算子を使用するタイミングと方法は?
cppreferenceには、テンプレート化されたユーザーリテラル演算子を使用できるという言及がありますが、いくつかの制限があります。
char
リテラル演算子がテンプレートの場合、空のパラメーター リストが必要であり、テンプレート パラメーターを 1 つだけ持つことができます。これは、次のような要素 type を持つ非型テンプレート パラメーター パックでなければなりません。
だから私は以下のコードのようなものを書きました:
質問:
- コードは機能しますが、空でないテンプレート パラメーターで演算子を使用するにはどうすればよいですか?
10_x<'a'>;
または10_<'a'>x;
コンパイルされません。 - そのようなテンプレート化された演算子の実際の使用例はありますか?