我不明白以下在C ++中使用的用法。 typedef有什么区别? 有人可以用一些例子来解释它吗?
template<typename DataType>
class DataWriter
{
using ObjType = std::function<void(DataType)>
// ...
}
答案 0 :(得分:4)
您的示例中与typedef
没有区别。
那些是相同的:
typedef int a;
using a = int;
一般来说,它更具通用性,这就是它被引入的原因:
可以模板化。
template<class X> using smart = std::unique_ptr<X>;
可用于将符号导入当前范围。
struct Derived : Base {
using Base::Fun;
};
答案 1 :(得分:2)
没有区别。 [dcl.typedef] / 2:
typedef-name 也可以由 alias-declaration 引入。该
using
关键字后面的标识符变为 typedef-name [..]。 它具有相同的语义,就像它被引入一样typedef
说明符。
即
using ObjType = std::function<void(DataType)>;
相当于
typedef std::function<void(DataType)> ObjType;