gpt4 book ai didi

c++ - 将延迟加载编成模板类是否合理?

转载 作者:搜寻专家 更新时间:2023-10-31 00:20:05 27 4
gpt4 key购买 nike

我想知道是否有类似的东西

template <typename T>
class LazyLoaded
{
mutable char mem[sizeof T]; //First item in the class to keep alignment issues at bay
const std::function<void (T&)> initializer;
mutable bool loaded;
public:
LazyLoaded() : loaded(false)
{
initializer = [] (T&) {};
}
LazyLoaded(const std::function<void (T&)>& init) : initializer(init), loaded(false)
{
}
T& Get()
{
if (!loaded)
{
new (static_cast<void *>(&mem)) T();
initializer(*static_cast<T*>(&mem));
loaded = true;
}
return *static_cast<T*>(&mem);
}
~LazyLoaded()
{
if (loaded)
{
static_cast<T*>(&mem)->~T();
}
}
};

是可能的或有意义的。 (我认为这段代码有问题,但是嘿,我在 10 分钟内就把它拼凑在一起了,所以....)

最佳答案

它叫做 boost::optional .这应该提供几乎所有必要的功能。

关于c++ - 将延迟加载编成模板类是否合理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6782590/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com