| 860 | |
| 861 | template <typename... Types> |
| 862 | Variant<Types...> MVariant<Types...>::takeValue() { |
| 863 | if (empty()) |
| 864 | throw BadVariantCast(); |
| 865 | |
| 866 | Variant<Types...> r; |
| 867 | call([&r](auto& v) { |
| 868 | r = std::move(v); |
| 869 | }); |
| 870 | m_variant = MVariantEmpty(); |
| 871 | return r; |
| 872 | } |
| 873 | |
| 874 | template <typename... Types> |
| 875 | bool MVariant<Types...>::empty() const { |