[v3 PATCH] Reduce the size of variant, it doesn't need an index of type size_t internally.
Jonathan Wakely
jwakely@redhat.com
Wed Jan 11 10:45:00 GMT 2017
On 11/01/17 10:29 +0000, Jonathan Wakely wrote:
>On 11/01/17 00:19 +0200, Ville Voutilainen wrote:
>>@@ -1086,7 +1099,12 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
>> { return !this->_M_valid(); }
>>
>> constexpr size_t index() const noexcept
>>- { return this->_M_index; }
>>+ {
>>+ if (this->_M_index ==
>>+ typename _Base::_Storage::__index_type(variant_npos))
>>+ return variant_npos;
>>+ return this->_M_index;
>
>GCC doesn't seem to be smart enough to optimize the branch away here.
But that's only for 32-bit x86. It optimizes well for x86_64, so no
need to obfuscate it.
More information about the Libstdc++
mailing list