この非可変個の例では:
int Func1();
double Func2();
void MyFunc( int, double );
int main()
{
MyFunc( Func1(), Func2() );
//...
}
またはが最初に計算されるかどうFunc1()
かは指定されていませんが、呼び出されるFunc2()
前に両方を実行する必要があるだけです。MyFunc()
この順序付けは、可変引数の展開でどのように機能しますか?
template < typename Func, typename ...Args >
void MyFunc2( Func &&f, Args&& ...a )
{
int b[] = { f( std::forward<Args>(a) )... };
//...
}
f
それが、最初の呼び出し後に状態を変更する関数オブジェクトであるとしましょう。?f
の各セグメントに対して順番に呼び出されa
ます。つまり、展開されたリストをランダムにスキップするのではなく、 のリストのf
最初の項目、次に 2 番目の項目、3 番目の項目などで呼び出されますか? a
各アイテム間にシーケンス ポイントと呼ばれていたものはありますか?