在 c++17 中,是否可以进行模板元编程来检测“this”是否是捕获组的一部分?还是在运行时?
我有一个 A 类,它接受 lambda 以供以后调用。然而,如果拥有 A 的对象 B 在它提供给 A 的 lambda 中捕获“this”,那么它可能会导致微妙的释放后使用。能够在这种情况下崩溃将是有价值的。
我知道它们不会是 100%(例如,用户可以将其捕获为“a = this”或“b = (void*)this”)。我也不期望能够捕获所有问题(例如,如果我捕获对成员变量的引用)。我只是想为明显错误的场景增添一些信心
拉姆达是而已比编译器生成的具有重载的类operator()
。模板编程中没有任何机制可以(跨平台)检测编译器是否生成特定类型,更不用说内省该类的“成员”以找出它捕获的内容以及如何捕获。
您只需期望系统的用户遵守适当的纪律即可。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)