“using”for“<template <class =”“> class T&gt;”

时间:2015-07-19 11:50:17

标签: c++ templates

这次不确定我是否会使用模板编程。我尝试传递模板模板参数。问题来自一个真正的问题,但我现在将以不同的方式解决这个问题。所以问题或多或少是“学术性的”

首先,我尝试将F_“存储”在一个将用作模板参数的结构中:

template <class M_, template <class> class F_>
struct Conf{
    using F = F_; // Problem 1: F_ is not a type!
    using M = M_;
};
然后从结构中读取

F并用于实例化func

template <class CONF> // CONF is a Conf<x, y>
void call(){
    using F = typename CONF::F; // Problem 2: F_ is still not a type!
    func<F>();
}

func是:

template <template <class> F>
void func(){
  F<MyType>::call();
}

问题是:我无法使用“存储”F。我能做些什么才能在结构中传递F

1 个答案:

答案 0 :(得分:2)

您应该模仿using这样的模板:

template <class M_, template <class> class F_>
struct Conf{
    template <class T>
    using F = F_<T>;
    using M = M_;
};