И вот тут, код отказывается работать верно. Возвращает вектор с двумя элементами, независимо от отданного ему массива в 10 элементов. Причем в возвращаемом векторе нулевой индекс только нормальный, первый же индекс вовсе пустой. Помогите разобраться, и нормально написать такую функцию.
template <typename T, std::size_t size>
class vector {
std::vector<T> vec;
public:
// Update 2: и это тоже тогда не имеет смысла:
// template <typename ...As>
// vector(As ...as) : std::vector<T>(as...) {}
// Тут какой-то интерфейс для векторов фиксированной длины.
};
но size уже не будет выводиться и с ним нужно не промахнуться при инициализации. Ну и от STL контейнеров наследовать тоже не очень, конечно - заменил на агрегацию, чтобы всякие push не сломали size.
Конечно, ибо vector класс динамический, его размер на этапе компиляции неопределён. Как подсказывает камрад quasimoto, можно наваять обвёртку, а лучше пользуйтесь std::array, он для этих целей и предназначен.
C++ тут не особо при делах, вне инициализации T[] == T* и в си, так что у ТС там деление размера указателя на размер string, а string у gcc это синоним для класса, который в области нестатичных данных выглядит так: