使用不带模板参数的 C++ 模板名称[重复]

2023-12-22

我一直在使用“const ObjArray&“作为 ObjArray 模板的参数,没有考虑它。它似乎工作正常,但当我再次阅读它时,它看起来不太对劲。不应该是”const ObjArray<T> &“?可以在不带参数的情况下引用模板名称吗?它在下面是否可以工作,只是因为它被声明为内联,编译器假定 T ?

template <class T>
class ObjArray : public BArray
{
public:
    inline ObjArray() :
        BArray(sizeof(T), NULL)
    {
    }

    inline ObjArray(const ObjArray& src) :
        BArray(sizeof(T), NULL)
    {
        copyFrom((ObjArray&)src);
    }

    inline ObjArray(ObjArray& src) :
        BArray(sizeof(T), NULL)
    {
        copyFrom(src);
    }
    ...
};

不,这种用法是正确的:在类模板内,类名引用模板的该实例,因此模板参数不是必需的:

template<typename T>
struct foo
{
    foo( const foo& ); //Copy ctor. foo is the same as foo<T>
};

这种行为在这一点中得到了很好的定义14.6.1 本地声明的名称标准的(重点是我的):

14.6.1 本地声明的名称 [temp.local]
与普通(非模板)类一样,类模板有一个注入类名 (第 9 条)。注入类名可以与或不与 模板参数列表。当没有使用它时 template-argument-list,相当于注入的类名 后面是类模板的模板参数 。当它与模板参数列表一起使用时,它指的是 指定的类模板特化,可以是当前的 专业或其他专业。

请注意,语法只是当前模板实例的别名。如果您需要具有其他参数的相同模板,则需要使用经典语法显式指定它。例如:

template<typename U>
operator foo<U>() const //Implicit conversion to other instance of the template
{
    return ...;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用不带模板参数的 C++ 模板名称[重复] 的相关文章

随机推荐

  • 如何根据列的顺序添加自增主键?

    我需要将自动增量 id 添加到已有的表中 我做了 ALTER TABLE table name ADD column name INT NOT NULL AUTO INCREMENT FIRST ADD PRIMARY KEY column
  • 取消选择 RowDetailsTemplate 后调整数据网格高度

    我正在使用 RowDetailsTemplate 显示行的嵌套数据网格 现在 当我选择一行来显示此嵌套数据网格时 数据网格的高度会扩展 但当取消选择该行时 它不会减少其高度 有没有办法在行详细信息折叠后将数据网格大小调整为其原始高度 是否可
  • 多对多关系的复选框

    class PlayerProfile lt ActiveRecord Base has many playing roles has many player roles through playing roles accepts nest
  • Magento 1.6.2 无法重新索引产品平面数据

    我们的 magento 1 6 2 无法重新索引产品平面数据 有时它还会显示 重新索引过程存在问题 我根据其他用户的经验尝试了很多解决方案 没有结果 我们进口了散装产品 但我们不确定这是重新索引问题的原因 理想的解决方案是什么 这是我在 s
  • 在版权符号之前插入特殊字符“”

    我们的源代码在每个 CSS 文件的顶部都包含版权 版权所有 每次 Firefox 样式编辑器加载 CSS 文件时 都会在版权符号之前插入一个特殊字符 版权所有 每次加载文件时它都会添加一个额外的特殊字符 我不认为这仅限于 Firefox 但
  • 将位图传递给在 logcat 上获取消息的其他活动 FAILED BINDER TRANSACTION

    当我将位图图像传递给其他活动时 我在 logcat 上收到 mag 03 20 12 06 56 553 E JavaBinder 280 FAILED BINDER TRANSACTION 它发生在大尺寸图像上 小尺寸图像运行良好 我该怎
  • 尝试使用实体框架保存大型 xml 时出现“ORA-00932:不一致的数据类型:预期的 NUMBER 获得 NCLOB”错误

    当我尝试使用 ADO NET 实体框架将具有大型 xml 的新记录插入具有 XmlType 列的 oracle 表时 出现以下错误 Oracle DataAccess Client OracleException Message ORA 0
  • 展开 pandas 数据框列中字典的嵌套列表

    我有一个名为 leads 的数据帧 是通过将 SFDC SOQL 的输出保存到数据帧中而得到的 我一直在尝试扩展 Leads r record 列 Company Month Amount Leads r done Leads r reco
  • 使用 ZeroMQ 的 C++ RPC 框架

    我需要使用 ZeroMQ 推拉套接字模式用 C 编写客户端 服务器应用程序 客户端必须对服务器接口中指定的函数进行 RPC 调用 我想知道是否有一个开源且商业可用的库 框架主要用于此目的 主要是 C 我做了一些谷歌搜索 似乎有一些用 pyt
  • Chrome 浏览器 - navigator.language 不返回国家/地区代码

    自最近几个月以来 我在从 window navigator language 检测 CountryCode 时遇到问题 我当前在 Chrome 上的语言是法语 瑞士 目前它仅返回语言 window navigator language fr
  • 通过列索引而不是列名称调用数据框中的列 - pandas

    如何使用数据框中的索引而不是名称来调用代码中的列 例如我有数据框df有柱子a b c 而不是打电话df a 我可以使用它的列索引来调用它吗df 1 您可以使用iloc http pandas pydata org pandas docs v
  • 即使使用代理,Nodejs 也不会为 React CRA 应用程序设置 cookie

    我有一个nodejs express React CRA 应用程序 我正在尝试从nodejs 设置一个cookie 服务器位于端口 4001 因此在我的 React 应用程序的 project json 中我有 proxy http loc
  • 如何制作操作系统启动时启动的启动程序

    假设我有一个 C 程序可以执行某些操作 我希望该程序继续自行运行或在计算机启动时自动开始执行 我怎样才能使这个程序不可检测 即它不能在任务管理器的进程列表中被检测到 假设我有一个在 Windows 窗体上显示随机数的程序 for Rando
  • 为什么scala不进行尾调用优化?

    只是玩延续 目标是创建将接收另一个函数作为参数和执行量的函数 并返回将应用参数给定次数的函数 实现看起来很明显 def n times T func T gt T count Int T gt T tailrec def n times c
  • Opera 框架有BUG吗?

  • 使用 MemberwiseClone 实现撤消/重做

    我正在尝试在 C 应用程序中实现撤消 重做堆栈 方法是在调用撤消时将对象恢复到之前的状态 我有一个 Action 类 基本上如下所示 class Action object old state object new state public
  • Android:是否可以将两个表面视图放在一起?

    我的想法是有两个表面视图 一个 SurfaceView 将保存图像 例如 ImageSurgaceView 第二个表面位于第一个表面之上 该表面保存注释 例如 AnnotationSurfaceView 如圆形 矩形等 现在我必须映射这些表
  • 标签应该使用逗号还是空格

    对于标记用户界面小部件是否应该需要逗号或空格作为分隔符 您有何看法 例如 该网站使用空格 需要多字标签才能使用连字符 我以为这是 Joel 的一些设计建议 但后来我意识到 Facebook 和 Wordpress 使用逗号 那么应该是什么呢
  • Google Docs 中的自动增量文件名?

    如何为我的所有帐户向文档添加功能 当我打开新文档的文件时 它希望找到我现在所在的文件夹 最后一个文件名并递增 1 并保存 对于默认的 Google 文档 保存名为 无标题文档 的文档 但我希望它保存它 文件夹 1 1001 doc文件夹 1
  • 使用不带模板参数的 C++ 模板名称[重复]

    这个问题在这里已经有答案了 我一直在使用 const ObjArray 作为 ObjArray 模板的参数 没有考虑它 它似乎工作正常 但当我再次阅读它时 它看起来不太对劲 不应该是 const ObjArray