Настройка.
enum class A { ... };
std::vector<B> bs;
A a = A::foo;
bs[a].bar(); // not going to compile, A isn't an integer
Я хочу написать это, так как это очень удобно.Самый простой способ, который я вижу, - написать оператор перегрузки со свободной скобкой функции.
template<class T> inline constexpr
underlying_type_t<T> underlying_cast(T t)
{ return static_cast<underlying_type_t<T>>(t); }
B& operator[](std::vector<B>& b, A a)
{ return b[underlying_cast(a)]; }
Возможно ли что-то подобное?