2016-06-28 125 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?等等。

相关问题