Возможно ли это? Конечно.
struct size_type {
template<class T, std::enable_if_t<std::is_same_v<T, std::vector<int>::size_type>>* = nullptr>
operator T() const {
return val;
}
std::vector<int>::size_type val;
};
std::vector<int> vi {size_type{10}, 4}; // vector of 10 ints with value 4
Это работает до тех пор, пока value_type
отличается от типа size_type
.
Стоит ли это делать? Нет.