LINUX.ORG.RU

История изменений

Исправление quasimoto, (текущая версия) :

по идеи должно было сработать

Оно в рантайме должно специализацию написать?

Можно сделать обвёртку

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.

Исправление quasimoto, :

по идеи должно было сработать

Оно в рантайме должно специализацию написать?

Можно сделать обвёртку

template <typename T, std::size_t size>
class vector {

    std::vector<T> vec;

  public:

    template <typename ...As>
    vector(As ...as) : std::vector<T>(as...) {}

};

но size уже не будет выводиться и с ним нужно не промахнуться при инициализации. Ну и от STL контейнеров наследовать тоже не очень, конечно - заменил на агрегацию, чтобы всякие push не сломали size.

Исходная версия quasimoto, :

по идеи должно было сработать

Оно в рантайме должно специализацию написать?

Можно сделать обвёртку

template <typename T, std::size_t size>
struct vector : public std::vector<T> {

    template <typename ...As>
    vector(As ...as) : std::vector<T>(as...) {}

};

но size уже не будет выводиться и с ним нужно не промахнуться при инициализации. Ну и от STL контейнеров наследовать тоже не очень, конечно.