问题遇到的现象和发生背景
但是当我试图用类模板实现一个过度封装的数据时却发现编译失败
问题相关代码,请勿粘贴截图
#include<iostream>
using namespace std;
template <typename T>class some {
public:
T t;
some(T tt):t(tt) {}
friend ostream& operator<<(ostream& os, some s)
{
os << s.t;
return os;
}
};
template<typename T>
void it(T t);
int i = 1;
int main()
{
int a = 0;
it(a);
}
template<typename T>
void it(T t)
{
if (i > 0) {
i--;
cout << t;
some<T> s(t);
it(s);
}
return;
}
运行结果及报错内容
严重性 代码 说明 项目 文件 行 禁止显示状态
错误 C1202 递归类型或函数依赖项上下文太复杂
我的解答思路和尝试过的方法
尝试把封装的次数降低,但是即使只要一次封装,这个用来进一步封装的函数都会报错
我想要达到的结果
至少让它编译通过吧,最好同时回答一下“编译器会不会对简单的过度封装的数据进行优化”这个问题