我有一個模板方法,返回類型將是reinterpret_cast <>()調用的結果。如何讓編譯器推斷C++ 11中模板化方法的返回類型?
class A {
void *_ptr;
public:
template<typename T>
T buffer() { return reinterpret_cast<T>(_ptr); }
};
這種方式讓我使用調用這個函數時<>
-syntax:
A a;
auto b = a.buffer<double *>();
我寧願不調用模板參數這種方法,讓編譯器推斷返回類型,基於在變量類型上。
A a;
double *out = a.buffer();
這是可能的返回類型扣除?
我嘗試使用auto
,->
-operand和尾隨返回類型語法。
auto buffer() -> decltype(reinterpret_cast<T>(_ptr)) const
{ return reinterpret_cast<T>(_ptr); }
但它仍然不起作用。
有沒有辦法做到這一點,在C + + 11?
但可變類型是'A'。在代碼中沒有關於返回類型的信息。你必須在某個地方定義它,即。 '使用type = double;' –
@ Jaa-c您能否詳細解釋您的澄清請求? –