嵌套的可变参数类模板朋友模板?

时间:2020-04-01 12:25:59

标签: c++ templates variadic-templates

抱歉,标题令人困惑...我想做的是:

template<typename T, typename... Ts>
struct Foo {
    ??? template<bool Bool> friend Foo<Ts...>::Bar<Bool> ???
private:
    Foo() {}
public:
    template<bool Bool>
    struct Bar {
        Foo<Ts...> foo(){return Foo<Ts...>{};}
    };
};

例如,对于任何T和Bool,Foo<int, int>只能从Foo<T, int, int>::Bar<Bool>构造。

我尝试使用模板别名,这个别名看起来最接近工作:

    template<typename R, bool Bool>
    using parent_bar = typename Foo<R, T, Ts...>::template Bar<Bool>;
    template<typename R, bool Bool>
    friend class parent_bar;

看来这根本不可能,我只想确认一下。尽管Bjarne Stroustrup声称p位居首。 C ++语言第4版的684,“几乎可以肯定的是,复杂的友谊模式肯定是设计错误”,我有很好的理由使用它。

0 个答案:

没有答案