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

时间:2018-10-18 02:07:10

标签: c++ lambda static

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

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

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

我有但不喜欢的是:

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

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

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

1 个答案:

答案 0 :(得分:1)

您可能想做这样的事情

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

想法相同,但没有挑剔的演员表和新的位置。