假设我正在编写一个返回某种代理对象的函数,比如懒惰评估或其他目的。如果我写代码
auto x = func();
然后x
将是返回值的类型 - 不我想要代理的对象的类型。是否可以更改auto
或decltype
,以便在这种情况下使用它们将返回我想要返回的实际结果,而不是代理对象本身的类型?
答案 0 :(得分:3)
随机想法:
您可以使用decltype(*func())
获取代理对象的类型,或者访问代理对象。除了通常的auto
,const
等之外,&
没有修饰符。
如果这是一个懒惰的评估,你可能现在不想要最终的对象类型,对吗?
如果代理对最终对象有一个cenversion运算符,auto
怎么知道它应该被使用?如果有多个怎么办?
答案 1 :(得分:0)
为什么不在func()
内输入你在返回时想要的内容?