Во-первых, ваше определение псевдонима не имеет смысла.То, что вы хотите, это тип итератора.Это должно быть
using iter_t = decltype(begin);
Или
using iter_t = std::string::iterator;
Во-вторых, вы должны переместить это в начало функции, перед определением print
.
Более того, я не могу понять вашу функцию print
.Он печатает два отдельных символа.
Модифицированный код:
#include <iostream>
#include <string>
#include <iterator>
#include <functional>
using std::string;
using std::function;
using std::cout;
using std::endl;
void process (string);
int main (void){
string s = "This string";
process (s);
return 0;
}
void process (string s){
using iter_t = std::string::iterator;
function<void(iter_t,iter_t)>print = [&] (iter_t start, iter_t finish){
cout << *start << endl;
cout << *finish << endl;
return;
};
auto begin = s.begin();
auto end = s.end() - 1;
print(begin,end);
return;
}
Это (правильно?) Выводит
T
g