小编Mad*_*ist的帖子

如何创建模板依赖成员类型

我试图减少并简化一些可怕的嵌套和过度专业的模板化C++代码.为此,我希望能够声明成员类型,该成员类型取决于函数或类已实例化的模板化类型.

获取以下通用类模板生成的模板特化.'a'的类型取决于实例化类型.

  template <typename Float> class A;

  template <>
    class A<double> {  
      double a;
    }
  };

  template <>
    class A<float> {  
      float a;
    }
  };


  template <>
    class A<short> {  
      float a;
    }
  };
Run Code Online (Sandbox Code Playgroud)

除了'a'的类型,模板类型到double-> double的类型,float-> float和short-> float之外,这些类是相同的.有没有办法简单地封装这个映射,只允许只写一次类?

我想我想写下面的内容,但我不知道这是否可行.

  typedef double Float2<double>;
  typedef float Float2<float>;
  typedef float Float2<short>;

  template <typename Float>
    class A {  
      Float2<Float> a;
    }
  };
Run Code Online (Sandbox Code Playgroud)

注意我正在使用C++ 03并且不能使用C++ 11来实现此目的(我认为decltype可能在这里使用,但我不确定).

c++ templates c++03

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

标签 统计

c++ ×1

c++03 ×1

templates ×1