Использование std:array
От: Андрей Е  
Дата: 01.03.12 05:50
Оценка:
В новом стандарте в библиотеке появилась безопасная обёртка вокруг встроенного массива std::array. Сделано вроде как просто и эффективно. Даже инициализировать его можно так же как встроенный массив.
Всё бы хорошо, но есть одна проблема. Этот шаблонный класс требует два параметра: тип хранимого значения и размер. И если я хочу например передать array в фукнцию, даже по ссылке или указателю, я должен в типе аргумента функции указать оба параметра шаблона: тип и размер.
Пример:
#include <iostream>
#include <array>

void f(const std::array<int, 5>& x) {
    for (int y : x)
        std::cout << y << ", ";
    std::cout << '\n';
}

int main() {
    std::array<int,5> a={1,2,3};    
    f(a);
    return 0;
}

Это очень неудобно: нужно плодить волшебную константу везде, где используется массив и заменять ее ручками когда в массив добавляется ещё одно значение. При этом в функции эта константа никак не используется.

Подскажите пожалуйста, можно ли как-то обойти эту проблему?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.