1
5
是的,你可以使用范围保护技术
然后编写一个函数来创建自动锁定器
然后你可以这样写:
一旦常量引用超出范围,就调用析构函数。它不需要是虚拟的。至少海湾合作委员会 optimizes this quite well . 遗憾的是,这意味着您必须使您的locker对象可复制,因为您需要从maker函数返回它。但是旧对象不会尝试解锁两次,因为复制时它的指针设置为0,所以它是安全的。 |
2
2
很明显你不能逃避
但是类型擦除可以用来做你想要的。将类模板转换为类,将其构造函数转换为成员模板。但是您必须动态地分配一个内部实现对象。
实际上我没有尝试过,而且语法可能是错误的(我不确定如何获取特定函数模板实例的地址),但我认为原则上这应该是可行的。也许有人来修理我的错误。 我更喜欢这个,而不是范围保护,出于某种原因,我从来没有真正喜欢过它。 |
3
1
|
4
1
我认为JWSWMAR是正确的,你想要的是C++不可能的。然而, 类似的 (不是直接模拟)可以用C++ 0x构造,使用一些新的特征(rVals/移动和自动变量类型):
|
TCD · 标准库非类型模板类是否显式实例化? 2 年前 |
sovesti · 参数较少的模板函数中的演绎 2 年前 |
KiraHoneybee · 具有构造函数参数的模板化类 2 年前 |
Seymore Glass · 模板不工作的默认参数 2 年前 |
Alexander Daum · 模板参数中对模板类型的引用 6 年前 |
ledonter · 为什么注入的类名有时不被视为类模板中的模板名? 6 年前 |