【发布时间】:2022-01-18 22:20:39
【问题描述】:
给定std::optional<T>,是否可以从T 的地址推导出std::optional<T> 的地址?
可能的实现:
template<typename T>
struct myoptional
{ static std::size_t getOffset(void)
{ static const myoptional<T> s(std::inplace());
return reinterpret_cast<const char*>(&s.value())
- reinterpret_cast<const char*>(&s);
};
};
【问题讨论】:
-
T的地址是什么意思? T 是一种类型。
-
std::optional<int> i = 5; auto ao = &i; auto ai = &*i; -
即使你得到了这个偏移量,在实践中你可能没有用这个信息做任何有用的事情。这很可能是 XY 问题。您应该询问您正在尝试解决的问题,而不是询问您尝试过的解决方案。
-
@MichaelChourdakis 是 T 类型对象的地址,大概?还有什么意思?
标签: c++ stl stdoptional addressof