問題タブ [enable-if]

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.

0 投票する
3 に答える
364 参照

c++ - クラスobjでenable_ifを使用するには?

以下のコードは問題ありません。

しかし、クラスを使用してそれらをバンドルすると、コンパイルできません:

クラン++印刷:

だから私はコンパイラをだますために何かを書きます(2番目にSを追加しますfoo):

それはまだ動作しません:

クラスで機能させるにはどうすればよいですか?

0 投票する
2 に答える
151 参照

c++ - 'vector' の 'int' 型で判断する方法' C++ で?

enable_if を使用して、次のようなパラメーター タイプごとに動作を分離できます。

ここで、コンテナーの内部タイプによって動作を分離したいと思います。

C++ で何ができますか?

0 投票する
2 に答える
592 参照

c++ - ポインターを再帰的に逆参照する

ここで 1 つの質問に答えようとしているときに、次の質問を見つけました。

ポインターを再帰的に逆参照する方法 (C++03)?

回答からの適応コードは次のとおりです。

ただし、このテストでは、ポインターからポインターへの逆参照を値の型に失敗しています。

明らかに、wandkは 1 回だけ逆参照operator<されるため、2 つのポインターで呼び出されます。

以下を追加することでこれを修正できます。

しかし、それは失敗しint***ます。

手動でレベルを追加せずにこれを再帰的に行う方法はありますか?

注:これは単なる「理論上の」質問です。

0 投票する
1 に答える
1094 参照

c++ - テンプレートパラメータでクラスにメソッドを追加

enable_if を使用しないクラス内に、テンプレート パラメーター固有の関数を配置したいと考えています。その名前は変わりませんが、パラメーターの型は異なります (ただし、初期化されるのは 1 つだけなので、これは関係ありません)。

コンパイラが最初の関数を CASE2 で、2 番目の関数を CASE1 でインスタンス化しようとしているというエラーが表示されますが、置換の失敗によってエラーが発生することはないと思いました (SFINAE)。私は何を間違っていますか?助けてくれてありがとう!

0 投票する
2 に答える
1036 参照

c++ - ストリングまたはストリングピースに対してのみこの機能を有効にする方法

テンプレート関数があります。たとえば、次のようにします。

T == string または T == stringpiece に対してのみこの機能を有効にしたいと考えています。std::enable_if を使用してそれを行うにはどうすればよいですか???

0 投票する
1 に答える
163 参照

c++ - コンストラクター内のオーバーロードされた関数が参照エラーを引き起こしている

これがばかげた考えであることは承知していますが、コンテナー タイプと非コンテナー タイプの両方に単一のクラスを使用できるかどうかを確認したかったのです。まず、この質問からコードをコピーして貼り付けました。

次に、2 つのヘルパー関数があります。1 つはメンバー関数T変数の型 ( memberがあるかどうかvalue_type) を決定するためのもので、もう 1 つは の戻り値を決定するためのものですoperator *

そして、私のクラスは次のようになります。

curメンバーがない場合はT、代わりにへのポインターにする必要があります。この場合、begin と end は使用されません。const_iteratorTvalue_type

これが私の init 関数のロジックです。

問題をこの1行に絞り込みました。最初のオーバーロードの内容を直接削除init<T>(t)してコピー アンド ペーストすると、適切な結果が得られます。そうしないと、間違った結果が得られます。

たとえば、間違った出力は次のとおりです。

正しい関数を呼び出しているようです。何が問題ですか?

編集

何らかの理由で、関数の署名を変更しinit(const U& t) {て問題を修正します。誰でも理由を説明できますか?

コード


Valgrind エラー:

を呼び出さない場合、Valgrind はエラーを検出しませんinit<T>(t)


0 投票する
5 に答える
767 参照

c++ - コンパイル中に(ポインターを受け入れずに)配列サイズを計算する方法は?

arrayを指定すると、配列内の要素の数をコンパイル時の定数として生成しaたいと考えています。countof(a)ポインターがあれば、コンパイルしpたくありません。countof(p)これは、(1)簡単で(2)SOで一般的にカバーされているはずですが、(1)動作させることができず、(2)SOを検索しても何も見つかりませんでした。

これが私の試みです。

ヘルプ?

0 投票する
2 に答える
230 参照

c++ - C++11 関数パラメーター

最初のパラメーターに応じて異なるパラメーターを受け入れる関数 (C++11) を作成することは可能ですか? たとえば、次の動作が必要です。

呼び出し例:

これが可能かどうかは疑問です。enable_if とテンプレートの特殊化で何かできるかもしれないと思いますが、そうではないかもしれません...