gpt4 book ai didi

c++ - 将可变参数模板链接在一起

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:41:14 24 4
gpt4 key购买 nike

如果将以下代码中的 X 转换为使用 C++11 可变参数模板,并且应该支持任意数量的模板参数,它会是什么样子?

template<int OFFSET>
struct A { enum O { offset = OFFSET }; enum S { size = 2 }; };

template<int OFFSET>
struct B { enum O { offset = OFFSET }; enum S { size = 4 }; };

template<int OFFSET>
struct C { enum O { offset = OFFSET }; enum S { size = 10 }; };

template < template <int> class B0,
template <int> class B1,
template <int> class B2 >
struct X : public B0<1>,
B1<B0<1>::size * B0<1>::offset >,
B2< B1<B0<1>::size * B0<1>::offset >::size *
B1<B0<1>::size * B0<1>::offset >::offset >
{ };

int main(int argc, const char *argv[])
{
X<A, B, C> x;
return 0;
}

最佳答案

也许:

template <int Var, template <int> Head, typename... Tail>
struct X_helper : Head<Var>,
, X_helper<Head<Var>::size * Head<Var>::offset, Tail...>
{};

template <int Var, template <int> Arg>
struct X_helper : Head<Var>
{};

template <typename... Args>
struct X : X_helper<1, Args...>
{};

我希望我的语义正确。

关于c++ - 将可变参数模板链接在一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8768840/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com