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