C++ 模板类型的静态 lambda 成员的构造

C++ Construction of Static Lambda Member of Template type

本文关键字:成员 lambda 静态 类型 C++      更新时间:2023-10-16

我有一个包含静态成员的类,该成员是一个lambda。 lambda 确实有固定的参数,但可能有不同的捕获。这就是问题所在。此静态成员不是默认可构造的。

它也必须是静态的,我不能像在嵌入式系统上那样使用类型擦除模式。任何人都有任何想法或模式来解决这个问题。

我可以在测量大小的字节数组上进行就地构造,但这会产生自己的问题,我想避免它。

我有但不喜欢的是:

编辑 1 : 改进的示例更完整的示例可在此处找到: https://wandbox.org/permlink/UMwsXSR6c2QYleiU

编辑2:进一步改进的示例上述改进版本: https://wandbox.org/permlink/VTvGNlFRCNYG4J00

编辑3:修复了return_t https://wandbox.org/permlink/tl4BaH1zbutMV2nU 的错误

你可能想做这样的事情

template <class T>
class StaticWrapper
{
static T* t = nullptr;
StaticWrapper(T&& tt) { 
static T ttt {tt};
t = &ttt;
}
};

同样的想法,但没有挑剔的演员和新的放置。