我有一個T
類型的成員函數fn
,返回類型RT
。 我有一個模板,需要T
和RT
作爲參數。我想要別名這個模板類,這樣我的代碼就不會很難看,也很難閱讀。我將如何實現這一目標?我如何別名模板專業化?
template <typename X, typename Y>
struct I
{};
struct T
{
int& fn(int);
};
所以我想這個別名或像這種類型的,所以我可以寫這樣的功能:
template <typename C>
I< typename std::remove_reference<std::decltype(std::declval(C).fn(0))>::type, C> fn(C& c)
{
return I< typename std::remove_reference<std::decltype(std::declval(C).fn(0))>::type, C>();
}
但較少的混亂。我之前沒有使用過std::decltype
,所以我甚至不確定我是否正確地使用它,因爲我收到錯誤。
我正在考慮使用類似這樣的函數並對它進行decltype,但我遇到了一些困難,我希望它看起來更乾淨。
[像這樣的?](http://coliru.stacked-crooked.com/a/7fbad782592aa57b) –
肯定的。發佈它作爲答案,我會將其標記爲已回答。 – Adrian
哦,等一下。實例化時它不起作用。 [見這裏](http://coliru.stacked-crooked.com/a/3efd2d12eeaeff1f)。 – Adrian