注册 登录
编程论坛 C++教室

traits问题

花脸 发布于 2018-09-26 20:51, 1514 次点击
#include <iostream>  
#include <typeinfo>
#include <iterator>

using namespace std;  
 
class A
{
    public:
        A(int i=10)
        {
            k=i;   
        }
        int k;
};

template<class it>
void fun(it)
{
     typename iterator_traits<it>::reference reference;//编译时这行总是提示  [Error] 'reference' declared as reference but not initialized
        cout<<typeid(reference).name()<<endl;
}
int main( )   
{  
   
   A *a=new A(6);
   fun(a);
}
5 回复
#2
rjsp2018-09-26 23:42
引用需要初始
比如 int& r; 就缺少初始化
#3
rjsp2018-09-26 23:48
https://en.
#4
Jonny02012018-09-27 12:31
对 a type_traits 实际上是对 A * 的 type_traits
T * 的 type_traits 的 reference 是 T &
如一楼所说, 引用都是需要初始化的
翻译一下
 typename iterator_traits<it>::reference reference;
就是 T &reference;
这样的语句明显不合法
#5
花脸2018-09-27 15:58
回复 4楼 Jonny0201
好的谢谢。
#6
花脸2018-09-27 15:58
回复 3楼 rjsp
谢谢
1