LINUX.ORG.RU

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

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

Это называется std::random_access_iterator

Так всё равно нужны границы.

И если так делать, тогда уже код всей функции становится шаблоном. То есть, можно, конечно, писать функции в стиле «всё в заголовочном файле». Типа

template <typename T>
T & f(T v)
{
    n = v.size();
    ... 
    auto r = g(get<0>(v[i]), get<0>(v[j]))
    ...
}

И будет работать с любым типом, у которого есть size(), оператор [] и результат этого оператора достаточно похож на кортеж.

Но тогда эту штуку не упаковать в разделяемую библиотеку.

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

Это называется std::random_access_iterator

Так всё равно нужны границы.

И если так делать, тогда уже код всей функции становится шаблоном. То есть, можно, конечно, писать функции в стиле «всё в заголовочном файле». Типа

template <typename T>
T & f(T v)
{
    n = v.size();
    ... 
    auto r = g(get<0>(v[i]), get<0>(v[j]))
    ...
}

И будет работать с любым типом, у которого есть size(), оператор ‘[]’ и результат этого оператора достаточно похож на кортеж.

Но тогда эту штуку не упаковать в разделяемую библиотеку.