#include <iostream>
#include <vector>
using namespace std;
template < typename T>
template < typename T>
std:: vector < T> slice( std:: vector < T> const & v, int m, int n)
{
auto first = v.cbegin ( ) + m;
auto last = v.cbegin ( ) + n + 1 ;
std:: vector < T> vec( first, last) ;
return vec;
}
int main( )
{
// input vector
std:: vector < int > v = { 1 , 2 , 3 , 4 , 2 , 2 , 4 , 6 , 5 } ;
vector< int > :: iterator ptr;
// starting and ending index
int m = 4 , n = 7 ;
std:: vector < int > sub_vec = slice( v, m, n) ;
ptr = sub_vec.begin ( ) ;
cout << & ( * ptr) << " " ;
ptr = v.begin ( ) + 4 ;
//print(sub_vec);
cout << & ( * ptr) << " " ;
ptr = v.begin ( ) + 4 ;
return 0 ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwp0ZW1wbGF0ZTx0eXBlbmFtZSBUPgoKCnRlbXBsYXRlPHR5cGVuYW1lIFQ+CnN0ZDo6dmVjdG9yPFQ+IHNsaWNlKHN0ZDo6dmVjdG9yPFQ+IGNvbnN0ICZ2LCBpbnQgbSwgaW50IG4pCnsKICAgIGF1dG8gZmlyc3QgPSB2LmNiZWdpbigpICsgbTsKICAgIGF1dG8gbGFzdCA9IHYuY2JlZ2luKCkgKyBuICsgMTsKCiAgICBzdGQ6OnZlY3RvcjxUPiB2ZWMoZmlyc3QsIGxhc3QpOwogICAgcmV0dXJuIHZlYzsKfQoKaW50IG1haW4oKQp7CiAgICAvLyBpbnB1dCB2ZWN0b3IKICAgIHN0ZDo6dmVjdG9yPGludD4gdiA9IHsgMSwgMiwgMywgNCwgMiwgMiwgNCwgNiwgNSB9OwoJCiAgICB2ZWN0b3I8aW50Pjo6aXRlcmF0b3IgcHRyOyAKICAgIC8vIHN0YXJ0aW5nIGFuZCBlbmRpbmcgaW5kZXgKICAgIGludCBtID0gNCwgbiA9IDc7CgogICAgc3RkOjp2ZWN0b3I8aW50PiBzdWJfdmVjID0gc2xpY2UodiwgbSwgbik7CiAgICBwdHIgPSBzdWJfdmVjLmJlZ2luKCk7CiAgICBjb3V0PDwmKCpwdHIpPDwiICI7CiAgICBwdHIgPSB2LmJlZ2luKCkrNDsKICAgIC8vcHJpbnQoc3ViX3ZlYyk7CiAgICBjb3V0PDwmKCpwdHIpPDwiICI7CiAgICBwdHIgPSB2LmJlZ2luKCkrNDsKCiAgICByZXR1cm4gMDsKfQ==
compilation info
prog.cpp:7:10: error: declaration of template parameter ‘T’ shadows template parameter
template<typename T>
^~~~~~~~
prog.cpp:4:10: note: template parameter ‘T’ declared here
template<typename T>
^~~~~~~~
prog.cpp:8:16: error: too many template-parameter-lists
std::vector<T> slice(std::vector<T> const &v, int m, int n)
^~~~~
prog.cpp: In function ‘int main()’:
prog.cpp:26:45: error: ‘slice’ was not declared in this scope
std::vector<int> sub_vec = slice(v, m, n);
^
stdout