You can use some HTML elements, such as <b>, <i>, <a>, also, some characters need to be entity referenced such as <, > and & Your comment may need to be confirmed by blog author. Your comment will be published under GFDL 1.3 or later license with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
これは難しいですね。自分としては省略形ですかね。省略形と可変引数listは概念のlevelが違うと思います。可変引数listを示すために省略形を用いているということではないでしょうか。
ReplyDelete可変引数リストといったら、<cstdarg>で定義されているマクロの使用まで含めるのが、私としての感覚です。
ReplyDelete「...」は省略記号とでも呼ぶとして、
ReplyDelete使用に際しての意味あいはむしろ「ワイルドカード」が近い。
たしかに何と呼べばいいのか難しいところです。
本題とずれて申し訳ないのですが引数に省略子だけを書いた時の仕様ってどうなってるんでしょうか。
ReplyDelete規格書を見てもいまいちわかりません。省略子だけの場合は関数内部から引数を参照できないのですから
(ポインターを駆使すれば別ですが)スタックを確保する必要がなければ引数のコピーコンストラクターを呼ぶ
必要もデストラクターを呼ぶ必要もないはずです。しかしgccは省略子だけの場合と
その他の引数が付いている場合を区別していないらしく省略子だけの場合でも何らかの処理をしているようで
PODじゃないオブジェクトを渡すと異常終了します。こまかい仕様がわかればこれもバグとして報告することもできるんですが。
// gccの状態
void Function(...)
{
}
Function( std::string("Example") ); // abortする。
// 理想
void Function( A &object0, B const &object1 );
void Function( C &object0, B const &object1 );
void Function( ... );
template Call( Type &object )
{
Function( object, B() ); // TypeにAとC以外を指定した場合は省略子の関数をabortせずに実行する。
}
object1クラスが非トリビアルなコピー/ムーブコンストラクター、デストラクターなどを持つ場合、そのコードが実装によってサポートされるかどうかは、規格上どちらでもよい。GCCの挙動は規格準拠。
ReplyDeleteありがとうございました。
ReplyDeletehttps://en.wikibooks.org/wiki/More_C%2B%2B_Idioms/SFINAE
上記のようにfallback先として使われていることがありますが危険なんですね。
しかし、fallbackとしても使えないなら省略子だけの引数は何に使えばいいのでしょう?