2011-05-18 70 views
4

假設我正在編寫一個返回某種代理對象的函數,比如懶惰評估或其他目的。如果我寫這樣影響自動類型扣除

auto x = func(); 

代碼,然後x將返回值的類型 - ,我想代理對象的類型。是否可以更改autodecltype,以便在這種情況下使用它們將返回我想返回的實際結果,而不是代理對象本身的類型?

+2

不是我所知道的。我看到至少有兩個針對「operator auto()」轉換操作符的建議,用於在這種情況下觸發轉換。但沒有人爲此寫出嚴肅的建議。 – sellibitze 2011-05-20 11:24:49

+0

我無法看到你需要這個。要麼你想要真正的代理類型(如一些表達式模板,然後你會很高興使用'auto'),或者轉換的結果。在後一種情況下,你可以拼出類型(或'typedef'),就像我們在C++ 03中所做的那樣。您是否有一個特別的例子來說明這樣的功能會帶來明顯的優勢? – 2012-05-21 19:30:47

回答

3

隨想:

您可以通過使用decltype(*func()),但還是被代理對象訪問可能取得的代理對象的類型。除了通常的const,&等,auto沒有修飾符。

如果它是一個懶惰的評估,你可能不想現在最終的對象類型,是嗎?

如果代理服務器有最終對象的中心運算符,那麼auto怎麼知道它應該被使用?如果有多個呢?

0

爲什麼不在func()裏面輸入你想返回的東西?