【发布时间】:2014-12-07 16:48:59
【问题描述】:
好的,这很复杂。
我有一个多次实例化的 C++ 类模板。对于这些实例中的每一个,我都需要执行一个注册一些运算符的函数。在使用该模板实例的第一个对象之前,每个模板实例只需执行一次(这并不意味着它必须在编译时发生的在实例化中执行)。
到目前为止,我是手动完成的。但这是一种痛苦。所以我想自动执行注册功能。
我目前的想法是在构造函数中调用一个受保护的注册方法。然而,每当构造类的实例时,这都需要(小)开销。由于经常这样做,我想避免这种开销。
我也尝试使用静态 RAII 帮助器成员,但如果未主动访问静态模板类成员,则不会构造它们,因此此尝试失败。
有没有一种方法可以在没有运行时开销的情况下在类模板实例化(通过函数或可能通过 RAII 辅助类)上执行代码?
【问题讨论】:
-
通常模板在编译时而不是在运行时被实例化。你确定,你的问题是真的吗?
-
是的。我不需要执行代码 at 实例化。我需要在第一次使用对象之前执行它。
标签: c++ templates c++11 class-template