【发布时间】:2011-09-23 20:22:24
【问题描述】:
假设我是某个模板库 (CTL) 的用户,该模板库定义了一个模板,例如,Hector
template <class T>
class Hector {...};
在其文档中,它提供了许多关于Hector 模板行为的保证。
但随后它也为特定类型定义了一个特化Cool
template <>
class Hector<Cool> {....};
专门化的目的是对Hector 进行更优化的实现,但不幸的是,由于这种优化,许多Hector 的保证被违反了。
目前我真的不需要优化,我宁愿保留Hector的所有保证。有什么办法可以在不更改库代码的情况下(CTL 是一个非常受人尊敬的库,你知道的)绕过专业化?有什么办法吗?也许写某种包装?任何事物?我只想让编译器以正常、非优化的方式为Hector<Cool> 生成代码,并提供所有保证。
【问题讨论】:
-
包装类
struct Stool : public Cool { };怎么样,然后使用Hector<Stool>? -
没有 CTL 这样的东西。有一个库,它起源于几年前写的一些 CTL。
-
+1 纯属欢闹。
-
其实
class Hector还有一个额外的模板参数Allevator。 ;) -
@Xeo: ITYM
Alligator.
标签: c++ templates template-specialization