Make the vtables less absurdly huge (knocks 100KB off aegisub32.exe), eliminate some copies of the values when constructing the options, and use an enum class for the value type.
Apparently gcc does use final for devirtualization.