問題タブ [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++11 - 型がユーザー定義リテラルを通過するようにするにはどうすればよいですか?
Foo
ユーザー定義リテラルを使用してインスタンス化する必要がある POD タイプがあります (デフォルトのコピー、移動、および割り当ては問題ありません)。
例として、次のようなものが必要です。
ただし、上記のコードでは、次のコンパイル エラーが発生します (Xcode 4.6.3/Clang):
ビジネス用に {}-ctor を再開するにはどうすればよいですか?ただし、ユーザー定義リテラルに対してのみです。
c++ - 引数が 2 つのコンストラクターのユーザー定義リテラル
次のコードを検討してください。
UDL は機能しますが、Point のコンストラクターの両方の引数に対して機能させることは可能ですか? たとえば3x5
、リテラルPoint(3,5)
または場合3.5x
によっては、演算子本体で数学を実行して、フロートの小数部分から全体の部分を分離します..?
c++ - std::string に標準定義のリテラル接尾辞がないのはなぜですか?
std::string
簡単な質問: C++11 は、次のようなを作成するための「ユーザー」(実際には標準ライブラリ) 定義のリテラルを提供しないのはなぜですか?
C++ と同様に、Objective-C は C スタイルの文字列と、より使いやすいライブラリ型の両方をサポートしていますNSString
。ただし、C++ とは異なりNSString
、文字列リテラルの前に@
. 実際、リテラルにプレフィックスがないObjective-C コードを目にすることはほとんどありません。@
誰もがそれを行う方法であると知っており、それを使用しNSString
、続けています。
C++11 のユーザー定義リテラルではこれが可能であり、実際、Stroustrup の C++11 FAQ の UDL セクションでは、まさにこの例が使用されています。さらに、先頭にアンダースコアがない UDL は予約されているため、s
上記のようにプレーンを許可しても問題はありません。他のものと衝突する可能性はありません。
おそらく私は何かを見逃していますが、これは言語への非常に価値があり、リスクのない追加であるように思われるので、C++11 がそれを提供しない理由を誰か知っていますか? C++14 で表示される可能性はありますか?
c++ - Microsoft Visual Studio 2013 での C++ 11 ユーザー定義リテラル
私が知る限り、UDL は MVS 2013 に含まれ、サポートされています。
私は次のようなことをしようとしました:
上記の両方の行で、"" でエラーが発生し、演算子が必要であることが示されます。私の推測では、コードは機能するはずであり、UDL は MVS13 でサポートされているため、プロジェクトの設定に問題があると思われます。
何が問題で、どうすれば解決できますか?
c++ - ユーザー定義リテラルを定義できません
ユーザー定義リテラルについて読んでいて、このスニペットに出くわしましたが、使用しようとするとコンパイラ エラーが発生しました。
エラー : 演算子が必要です。私は Visual STudio 2013 を使用していますが、これは C++ 11 を適切にサポートしていると思います。何がうまくいかないのでしょうか?
c++ - 依存型の文字列リテラル — 不可能ですか?
結果の型が文字列入力の値に依存するように、ユーザー定義の文字列リテラル変換演算子を定義することは可能ですか?
ユーザー定義の整数リテラルと浮動小数点リテラルは、リテラル演算子テンプレートを受け入れ、リテラルの実際の文字がテンプレート引数として渡されるため、簡単です。例:
ユーザー定義の文字列リテラルにはそのようなものは存在しないようです。
現在の標準で、または将来の改訂で計画/議論されている、おそらくこれを行う別の方法はありますか?
c++ - __int128 @ min 負の値の UDL (ユーザー定義リテラル) による整数オーバーフロー
わかりやすく簡単にするために、次の数字を次のように短縮します。
−170,141,183,460,469,231,731,687,303,715,884,105,728
なので-170…728
170,141,183,460,469,231,731,687,303,715,884,105,727
なので170…727
これらの数値は、128 ビットの符号付き整数 ( の __int128 gcc
) の最小値と最大値を表します。
gcc はこの型の定数を定義する方法を提供していないため、このデータ型のユーザー定義リテラル (生のリテラル) を実装しました: _u128
forunsigned __int128
および_i128
for __int128
。
マイナス文字は UDL の一部ではありませんが、UDL の結果に適用される単項マイナス演算子です。
したがって、a -ddddd_i128
(ここでd
は数字) の場合、UDL は符号 __int128
付きの正の値を計算しddddd
、コンパイラはそれに単項マイナス演算子を適用します。ここまでは順調ですね。
問題は-170…128_i128
(これは の有効な値である必要があります__int128
) にあります:
UDLは の範囲外の符号付き __int128
正数を計算し、未定義の動作 (符号付き整数のオーバーフロー) を引き起こします。170…128
__int128
この数値定数を UDL で表す解決策はありますか?
私のUDLは宣言されています(今のところ、非constexprのループバージョンです)(生のリテラルです):
いくつかの使用法:
ビットシフト、数学演算など、さまざまな方法で定数を定義する方法があることは知っていますが-170…728
、一貫した方法で作成できるようにしたいです。たとえば、この状況は望ましくありません。次を使用して任意の定数を作成できますを除いて-170…728_i128
、この UDL に追加のトリックを使用する必要があります。
c++ - ユーザー定義リテラルのスコープは何ですか?
次の 2 つを検討してください。
x
リテラルは 2 回定義されていますが、そのうちの 1 つは で定義され、namespace X1
もう 1 つは で定義されていnamespace X2
ます。
C++ 標準によると、このコードはコンパイルできますか?