Каковы правила размещения параметров пакета оператора - PullRequest
0 голосов
/ 09 сентября 2018

Я пытаюсь понять, как использовать пакет параметров в C ++, и я пришел к нескольким примерам, меня смутило размещение оператора pack ..., иногда это до имени пакета, иногда после:

template<typename... Ts> void func(Ts... args){
    const int size = sizeof...(args) + 2;  // <====== before
    int res[size] = {1,args...,2};   // <====== after
    // since initializer lists guarantee sequencing, this can be used to
    // call a function on each element of a pack, in order:
    int dummy[sizeof...(Ts)] = { (std::cout << args, 0)... };
}

Иногда это внутри круглых скобок, иногда за пределами:

Class c1(&args...);
::new((void *)p) U(std::forward<Args>(args)...) // <==== outside

Есть ли общее правило использования пакетов?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...