有人知道为什么要为此代码生成编译说明吗?在typename T::value_type e
中编译时发生错误。我检查过,value_type
存在于向量标题typedef _Tp value_type;
中,谢谢
#include <vector>
using namespace std;
template <class T>
void f(T& c)
{
typename T::value_type e = c[0];
}
int main(int argc, char *argv[])
{
vector<int> v = {0, 1};
f(v);
return 0;
}
编译:
clang++ -std=c++11 -pedantic -Wall test181.cc && ./a.out
test181.cc:7:28: warning: unused variable 'e' [-Wunused-variable]
typename T::value_type e = c[0];
^
test181.cc:13:5: note: in instantiation of function template specialization
'f<std::vector<int, std::allocator<int> > >' requested here
f(v);
^
1 warning generated.
答案 0 :(得分:0)
这让您知道您已经写入了一个永远不会被读取的变量,这通常是代码的味道。如评论中所述,这仅是警告,不是错误。
答案 1 :(得分:0)
该注释实际上与未使用变量的警告有关。使用该变量摆脱警告。