當返回類型需要更改時,哪些策略可用於棄用函數?例如,我有:如何在返回類型更改時棄用函數C++
BadObject foo(int); // Old function: BadObject is being removed.
Object foo(int); // New function.
Object
和BadObject
是非常不同的內部,並交換它們的返回類型將打破代碼爲我的圖書館的現有用戶。我打算避免這種情況。
我可以標記BadObject foo(int)
deprecated,並給用戶更改受影響的代碼的時間。
但是,我can't overload foo
based on return-type。 foo
命名得非常好,它不需要額外的參數。如何在保留舊版本的同時將新功能添加到我的庫中,至少在一段時間內?
什麼是在不破壞過多依賴代碼的情況下棄用舊功能的策略,同時爲用戶提供遷移到新版本的時間?理想情況下,我會保留當前的函數名稱和參數列表,因爲它現在命名相當好。感覺這個應該是是一個相當普遍的問題:什麼是一個體面的方法來解決它?
那麼,如果用戶在任何地方都使用auto,而不是手動鍵入返回類型,那麼所有內容都將自動運行:)。 – ScarletAmaranth
現在這並沒有幫助你,但是C++ 11內聯命名空間是完美的。在'inline namespace v0'中聲明'foo',當需要修改時,在'inline namespace v1'中聲明'foo''(並從'v0'中移除'inline')。 – mythagel