The only other option is a template with a specialization to extract the argument:
template <typename T> struct GetSize {};template <std::size_t N> struct GetSize<ExtendableIndex<N>> : std::integral_constant<std::size_t, N> {};
GetSize<ExtendableIndex<42>>::value
== 42
Since this is more verbose, usually your approach is used.