【问题标题】:Can I typedef a template template parameter?我可以键入定义模板模板参数吗?
【发布时间】:2011-05-01 02:13:22
【问题描述】:

在 C++ 库头文件中,我们有时会看到以下内容以提高类内代码的易读性:

template<typename MyExplicitelyLongTemplateParameter>
class C
{
public:
    typedef MyExplicitelyLongTemplateParameter P;

    // Use "P" and keep your sanity.
};

我的问题是,模板模板参数可以做同样的事情吗?

template<template<typename> typename MyExplicitelyLongTemplateParameter>
class C
{
public:
    typedef /* ??? */ P;

    // Use "P" and keep your sanity.
};

【问题讨论】:

  • 我以前没有遇到过这种语法。它有什么作用?
  • 我认为应该是 template

标签: c++ templates


【解决方案1】:

您不能创建 typedef,不,但可以缩短名称:

template <template <typename> typename MyExplicitlyLongTemplateParameter>
class C
{
public:

    template <typename T>
    struct P 
    {
        typedef MyExplicitlyLongTemplateParameter<T> Type;
    };

    // Use "P<T>::Type" and keep your sanity.
};

【讨论】:

  • +1,但正如上面的 cmets 所述,它确实应该是 &lt;template &lt;typename&gt; class ...&gt;
【解决方案2】:

在当前标准中,您不能 typedef 模板。在即将推出的新标准中,您将能够....

【讨论】:

  • 在新标准中如何才能使用 typedef?
猜你喜欢
  • 2021-01-19
  • 1970-01-01
  • 1970-01-01
  • 2017-07-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-23
  • 2023-03-07
相关资源
最近更新 更多