C ++:为什么"使用"在某些情况下不起作用?

时间:2016-06-28 05:35:46

标签: c++11

没关系:

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; }

没关系。有没有办法为calc1定义别名?

1 个答案:

答案 0 :(得分:2)

using name = thing声明了一个类型别名。 calc1是模板函数,而不是类型。它与声明变量并尝试使用using声明一个别名没有什么不同。

无法声明函数别名。由于C ++的各种规则,这样做有很多问题。您是否希望别名用于整个重载集或仅一个特定函数?别名是否应包括ADL?等等。