C++11 具有函数(args)的可变模板。。。膨胀 今天,我的同事用函数调用的Valad模板向我展示了一个惊人的C++扩展技巧。简而言之,它看起来像: template <typename T, T... I> void print_sequence(std::integer_sequence<T, I...>) { std::initializer_list<bool>{ bool(std::cout << I << ' ')... }; }

C++11 具有函数(args)的可变模板。。。膨胀 今天,我的同事用函数调用的Valad模板向我展示了一个惊人的C++扩展技巧。简而言之,它看起来像: template <typename T, T... I> void print_sequence(std::integer_sequence<T, I...>) { std::initializer_list<bool>{ bool(std::cout << I << ' ')... }; },c++11,c++14,variadic-templates,initializer-list,variadic,C++11,C++14,Variadic Templates,Initializer List,Variadic,上面的..与Args::value绑定的上下文是否与函数调用的上下文相同 template<typename... Args> inline void pass(Args&&...) {} template<typename... Args> inline void expand(Args&&... args) { pass( some_function(args)... ); } expand(42, "answe

上面的
..
Args::value
绑定的上下文是否与函数调用的上下文相同

  template<typename... Args> inline void pass(Args&&...) {}
  template<typename... Args> inline void expand(Args&&... args) {
    pass( some_function(args)... );
  }
  expand(42, "answer", true);
template<typename ...Args>
void foo () {
  fun({Args::value...});
}