0
我有這個相當簡單的模板類:的std ::功能不能在模板實例推斷重載型
template <typename Value>
struct Foo {
typedef Value ValueType;
Value array[3];
};
現在我嘗試使用依賴型,以得到一個簡單的函數的函數對象(std::function
) F
作爲函數參數和返回類型。
template <typename F>
void floorfunc(const F& foo) {
typedef typename F::ValueType Value;
auto fptr = std::function<Value(Value)>(std::floor);
}
編譯器能夠正確instanciates的Value
類型,但不能猜測floor
正確的函數重載,並把我這個錯誤信息需要使用
error: no matching function for call to 'std::function<float(float)>::function(<unresolved overloaded function type>
我如何告訴編譯器至極超載在這種情況下 ?
它不能被包裹在lambda中嗎?例如,'std :: function([](float f){return std :: floor(f);});'。 –
@JamesAdkison:當你嘗試時會發生什麼? –
我剛試過,因爲你問了,它似乎工作(Visual Studio 2013)。 –