假设我正在编写一个返回某种代理对象的函数,比如说用于惰性求值或其他目的。如果我写这样的代码
auto x = func();
然后 x
将是返回值的类型 - 不是我想要代理的对象的类型。是否可以更改 auto
或 decltype
以便在这种情况下使用它们将返回我想要返回的实际结果,而不是代理对象本身的类型?
最佳答案
随意的想法:
您可以使用 decltype(*func())
获取代理对象的类型,或者访问代理对象。除了通常的 const
、&
等,auto
没有修饰符。
如果它是惰性求值,您现在可能不想要最终对象类型,对吗?
如果代理对最终对象有一个转换运算符,auto
怎么知道应该使用它呢?如果不止一个怎么办?
关于c++ - 影响自动类型推导,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6050621/