Tho*_*mas 2 c++ decltype c++11
这是我第一次使用decltype,我不确定我是否正确使用它.代码确实编译,似乎适用于POD,如char和int.
但是,我想知道我是否会遇到更复杂数据类型的任何问题 - 我被其他人警告过,auto和decltype之类的东西很快就会产生意想不到的结果.
我的假设是这个模板适用于任何具有operator!=定义的类型T. 我应该关注哪些边缘情况?
#include <forward_list>
#include <iostream>
#include <cstdlib>
#include <vector>
template<typename T>
bool isPalindrome(const std::forward_list<T>& lf)
{
auto iter = lf.begin();
std::vector<decltype(iter)> bv; // <-- Correct usage?
while(iter!= lf.end())
{ bv.push_back(iter++); }
int istop = bv.size()/2 + bv.size()%2;
iter = lf.begin();
for(int i = bv.size()-1; i>=istop; i--, iter++)
{ if( *iter != *(bv[i])) return false; }
return true;
}
int main(int argc, char* argv[])
{
std::forward_list<int> list = {0,1,2,1,0};
std::cout << "Is palindrome: " << isPalindrome(list) << std::endl;
return 1;
}
Run Code Online (Sandbox Code Playgroud)