其他分享
首页 > 其他分享> > C可变参数函数模板

C可变参数函数模板

作者:互联网

可变参数模板的概念对我来说非常混乱,我想让它变得更复杂(我认为……).
让我们考虑以下代码:

template <typename T>
class base  
{  
    template <typename... E>  
    virtual void variadic_method_here(E... args) = 0;  
};

和实施班:

class derive : public base<some_object> 
{  
    void variadic_method_here(concrete_args_here);  
};

我怎么做?

解决方法:

我想如果我遇到这个问题,我会使用CRTP和重载来解决问题.

例如.:

#include <iostream>

template <typename Impl>
class base {
public:
   template <typename... E>
   void foo(E... args) {
      Impl::foo_real(args...);
   }
};

class derived : public base<derived> {
public:
   static void foo_real(double, double) {
     std::cout << "Two doubles" << std::endl;
   }

   static void foo_real(char) {
     std::cout << "Char" << std::endl;
   }
};

int main() {
  derived bar;
  bar.foo(1.0,1.0);
  bar.foo('h');
}

标签:variadic,c,templates
来源: https://codeday.me/bug/20190726/1541540.html