开发者

C++ variadic function templates

The concept of variadic templates is quite confusing to me a开发者_如何学Pythonnd I want to make it a bit more complex (well I think...).

Let us consider the following code:

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

and an implementing class:

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

How do I do that?


I think if I were faced with this problem I'd use CRTP and overloads to solve the problem.

e.g.:

#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');
}


You can't have a templated virtual function.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜