2016-06-28 123 views
0

這是OK:C++:爲什麼「使用」在某些情況下不起作用?

template<typename T> 
    using MyVector = std::vector<T>; 

MyVector<int> xyz; 

但不是這樣的:

template <typename F> 
using MyCalc = float calc1(F f) { return -1.0f * f(3.3f) + 666.0f; } 

雖然

template <typename F> 
float calc1(F f) { return -1.0f * f(3.3f) + 666.0f; } 

是OK。有沒有辦法爲calc1定義別名?

回答

2

using name = thing聲明一個類型別名。 calc1是一個模板函數,而不是一個類型。這與聲明一個變量並嘗試使用using來聲明一個別名沒什麼兩樣。

無法聲明函數別名。由於C++的各種規則,這樣做有很多問題。你希望別名是針對整個重載設置還是隻針對一個特定的功能?別名是否包含ADL?等等。

相關問題