問題タブ [default-arguments]

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 投票する
1 に答える
418 参照

c++ - デフォルトの引数で参照を転送しますか?

Forwarding Reference (以前はScott Meyers によってUniversal Referencesと呼ばれていました) のデフォルト引数を指定する方法を理解するのに苦労しています。

私がやりたいことをしようとしているコードの例を次に示します。

Coliru でも利用できます

エラーを調べてみると、テンプレート引数をデフォルトに設定し、その後引数をデフォルト構築することで機能させることができることがわかりました。

コリルにも

これはこれを処理する「適切な」方法ですか?私が使用する構文は何ですか?「デフォルトの転送参照」の望ましい効果を得る方法は複数ありますか? これはどのように書けばよいのでしょうか?また、後でコードに大量の SFINAE を振りかけることになるので、複数のオーバーロードの記述を含まないものをはるかに好むことを覚えておいてください。

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

c++ - 再宣言時に置換される関数のデフォルト引数

次のコードが整形式である理由:

デモ

しかし、次の

デモ

は不正です。を調べてみたN4296::8.3.6 [dcl.fct.default]ところ、次の例が見つかりました。

しかし、clang はそうではないようです。

デモ

それで、それは実装上の問題ですか?正式には、この例はすべて受け入れられるはずですよね?

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

c++ - C++ のデフォルトの関数パラメータが機能しない

デフォルトのパラメータが必要な関数があります:

これは機能です:

エラー:

私は何が間違っていたのか理解できません。

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

c++ - デフォルトの引数を持つ関数から関数を呼び出せないのはなぜですか?

プログラム:

デモ

foo(5)私は最終的に呼び出されることを期待していました。対照的に、次のプログラムは問題なく動作します。

デモ

その違いを説明していただけますか?

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

python - デフォルトの出力ファイルを入力ファイルに依存させる

あるファイル タイプを別のファイル タイプに変換する Python スクリプトを作成しようとしています。出力ファイルを指定するオプションが必要ですが、デフォルトでは、デフォルトのファイル名の拡張子を変更するだけです。

convert('foo.gb')例: を出力したいfoo.faaconvert('foo.gb', 'bar.faa')、出力するbar.faa

私がこれを実装した方法は次のとおりです。

そのため、出力が指定されているかどうかを確認し、指定されていない場合は、正規表現を使用して入力ファイル名を正しい拡張子に変更します。このコードは機能しますが、やや雑であるか、少なくともあまり読みにくいように見えます。.ファイル名が拡張子の前以外の場所にある場合も壊れます。

これを行うより良い方法はありますか?

0 投票する
4 に答える
117 参照

python - Pythonで引数がNoneとして指定されている場合、引数にデフォルト値を使用するように関数を取得する良い方法は何ですか?

デフォルト値がlikefunctionのブール値引数を取る関数 ( と呼ばれる) があるとします。Truedef function(argument1 = True)

resolveArgここで、この関数を使用して、既存のインフラストラクチャで引数をチェックする別の関数 ( ) の出力を使用して引数を指定するとします。このresolveArgメソッドは一般的に使用され、指定された関数 (例: ) の引数値が見つかった場合functionは関数の引数をそれに設定し、それ以外の場合は引数を に設定しますNone

引数がこの他の関数 ( ) によってfunction設定されている場合、引数のデフォルト値を使用するにはどうすればよいですか?NoneresolveArg

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

c++ - GCC のデフォルト引数 segfaults のための空のブレース初期化子を持つ std::map 引数

問題

私が開発したライブラリで segfault を報告しているユーザーからバグ レポートを受け取りました。

問題のあるコードの最小限の例は次のとおりです。

GCC でコンパイルすると (4.8.2 と 4.7.3 をテストしました) 0、コンテナーのサイズとして正しく出力されますが、ループ内でセグメンテーション違反が発生します (これはまったく実行されるべきではありません)。

回避策

ただし、宣言を次のように変更することで問題を解決できます。

作品のコピーmapも:

パラメータを に変更してconst std::map<...>&も機能します。

GCC 4.9.1 は正常に動作します。

また、Clang はコードを正常にコンパイルして実行します。(失敗した gcc 4.8.2 と同じ libstdc++ を使用している場合でも)

作業例: http://coliru.stacked-crooked.com/a/eb64a7053f542efd

質問

関数内でマップが有効な状態にないことは明らかです (詳細は後述)。GCC (または libstdc++) のバグのように見えますが、ここで愚かな間違いを犯していないことを確認したいと思います。このようなバグが少なくとも 2 つのメジャー バージョンで gcc に残るとは信じがたいです。

だから私の質問は次のとおりです:デフォルトstd::mapパラメータを初期化する方法が間違っていますか(そして私のコードのバグ)、それともstdlibc++(またはgcc)のバグですか?

私は回避策を探していません (コードを機能させるために何をすべきかを知っているため) アプリケーションに統合すると、問題のあるコードが一部のコンピューターで正常に実行されます (gcc 4.8.2 でコンパイルされた場合でも)。

詳細

私はそれを使用してコンパイルします:

gdb からのバックトレース:

/tmp/c.cpp:9 は次の行ですstd::cout << ...

ASAN は次のように報告しています。

これはnullptr - 8

valgrind ショー:

マップの内部状態を見ると、コードが実際に失敗する必要があることがわかります。

std::map::begin()libstdc++ では、次の値を返します

その内部表現から、次をstd::map::end()返します。

gdb ショー:

begin()そのため、との値は、 empty の標準で義務付けられてend()いるものと同じではありません ( begin()nullptr です) std::map