小编dnl*_*lgl的帖子

如何制定政策规定成员变量类型?

在尝试应用基于策略的设计时,我陷入了困境(简化):

template <class TPrintPolicy, typename T>
struct A : private TPrintPolicy {
    using TPrintPolicy::Print;
    T t;
    void Foo() {
        Print(t);
    }
};

struct IntPolicy {
    void Print(int n) {
        std::cout << n << std::endl;
    }
};

int main(int argc, char* argv[]) {
    A<IntPolicy, int> a;
    a.Foo();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这里有一个问题:我应该如何重新定义A类,以便只能为A模板提供策略参数,让它自己推断T,如下所示:

A<IntPolicy> a;
Run Code Online (Sandbox Code Playgroud)

优选地,政策定义不应该比现在复杂得多.有任何想法吗?

编辑:
我忘了提到我不希望策略导出typedef.这当然是简单的解决方案,但不能自己推断T的类型?

c++ templates

1
推荐指数
1
解决办法
228
查看次数

标签 统计

c++ ×1

templates ×1