【问题标题】:c++ templating to specific type without using traditional Template Specializationc++ 模板化为特定类型而不使用传统的模板专业化
【发布时间】:2012-03-11 00:40:43
【问题描述】:
template <typename T_>
class my_class {
public:
       typedef T_   value_type;
       typedef T_ * pointer;

我正在开发一个模板类,但是因为 C++ 错误检测和智能对于模板化的东西来说很糟糕,有没有办法可以将模板设置为 example int 以获得智能的好处,然后当我完成开发只是将其切换回来并修复几个错误?

我仍然希望我的代码是通用的,并且将其重写为模板专业化的工作量太大。

我希望能够做类似的事情

template <typename T_ = int>
class my_class {
public:
       typedef T_   value_type;
       typedef T_ * pointer;

【问题讨论】:

  • 更新您的 Visual Studio 应该会有所帮助,我对使用 2010 的模板和 Intellisense 没有任何问题
  • @dauphic 运行 VS2010 终极最新更新
  • 您在“我希望能够做类似的事情”下编写的代码完全有效,那么您为什么不使用它呢?
  • @interjay 我之前尝试过,是的,它可以编译,但它不能解决我遇到的问题,我仍然可以覆盖该类型

标签: c++ templates


【解决方案1】:

我不完全确定我理解您要完成的工作,但是您可以在类中键入def T_int 并禁用模板语句,或者通过预处理器或将其注释掉。

#ifndef NO_MY_CLASS_TEMPLATE
template <typename T_ = int>
#endif
class my_class {
#ifdef NO_MY_CLASS_TEMPLATE
       typedef int T_;
#endif
public:
       typedef T_   value_type;
       typedef T_ * pointer;

【讨论】:

  • 有点。然而,这对依赖类型解析具有重要意义。
  • 这看起来不错,似乎正在工作,但我必须做更多的工作才能验证它,将接受作为答案然后 +1
  • 非常感谢,这暴露了我之前看不到的几十个错误,因为模板隐藏了它们
猜你喜欢
  • 2020-07-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-24
  • 1970-01-01
相关资源
最近更新 更多