在探讨技术的深层次原理时,我们往往不自觉地融入了对人类行为和思维模式的理解。这些隐性的心理学原理,如何应用在我们对 std::variant(标准变体)这一 C++ 功能的理解中,将是本章的探索重点。 1.1 std::variant的概念 std::variant,或称标准变体,是 C++17 标准库引入的一种类型,用于安全地存储并访问多种类型中...
这个里边源码极其复杂,这里我们只分析重点, 可以看出来variant内部有个private的成员, __impl,也就搞清楚impl的结构,就搞清楚了整个variant的底层支撑原理 __impl C++ template class _LIBCPP_TEMPLATE_VIS __impl : public __copy_assignment<__traits<_Types...>> { using __base_type = __copy_assignmen...
std::variant 不仅仅是一个技术工具,它也反映了我们对选择、确定性和多样性的深层次需求。 正如C++之父 Bjarne Stroustrup 所说:“编程不仅仅是一门技术,它也是一门艺术。”而艺术,总是与人性紧密相连。 2. std::variant 的原理 深入理解 std::variant 的工作原理,不仅可以帮助我们更有效地使用它,还可以让...
std::variant 原理研究 不知道 variant 的可以先看一下这个:std::variant - cppreference.com 数据的存储 因为variant 跟 union 很像,所以我一开始以为 variant 是在内部创建一块足够大(能存放大小最大的类型)的缓冲区,然后通过 placement new 等方法在缓冲区上操作。然后我就发现有问题,variant 是支持 constexpr...