問題タブ [fold-expression]
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++ - MSVC での式の折り畳み
平均値を計算する次の関数があります。
VS 2017 15.6.0 Preview 3 では、次のコード
出力します2.5
。MSVC は fold 式を1 + 3 / N
ではなく として解釈しているよう(1 + 3) / N
です。折りたたみ式の周りに括弧を追加すると、結果は正しくなります。GCC では余分な括弧は必要ありません。
これは MSVC のバグですか、それとも余分な括弧が必要ですか?
c++ - 特定の型で折り式を使用するには?
std::string
a に部分文字列が含まれているかどうかを確認する関数があります。std::string_view
コピーが行われないように、文字列を として渡します。
新しい C++17 フォールド式を使用して、文字列に複数の部分文字列が含まれているかどうかを確認する関数を作成したいと考えています。繰り返しますが、s で渡したいと思いstd::string_view
ます。
どうやってやるの?
私が知る限り、上記のバージョンは、部分文字列をそれらが入ったタイプとして受け取ります。したがって、 astd::string
がコピーされます。タイプを に修正するにはどうすればよいstd::string_view
ですか? 何かのようなもの:
c++ - C++14 でのこの C++17 フォールド式の代わりになるものは何ですか?
以下は、C++17 のラムダ式に基づいた簡潔な折り畳み式です。
C++14 で同様のことを行うために書いたこのコードがありますが、本来よりもはるかに冗長で紛らわしいようです。上記の C++17 コードを C++14 で比較的明確かつ簡潔に表現する方法を探しています。正確には、関数呼び出しのような構文を使用して、既知の次元数のベクトルのベクトルの大きさの 2 乗を計算するコードを記述できるようにしたいと考えています。ただし、次元数は任意に変更できます。また、座標系の個々のコンポーネントの正確な数値型も任意であり、場合によっては異質である可能性があります。しかし、C++14 で C++17 の折り畳み式を処理する一般的な方法が理想的です。