C++: "trait"和 "meta-function"是同义词吗?

标签 c++ template-meta-programming

或者,trait 可能是指利用元函数 的特定方式?

如果它们不是同义词,请指出一些特征的例子,这些例子不是元函数不是特征的元函数。一段实际工作的代码,可能在 STL 或 Boost 库中,比人为的玩具示例更受欢迎。

我想看看 C++ 编程领域的专家如何使用这些术语。不知道有没有权威的定义...

提前致谢!


澄清:我并不是在寻找特征或元函数的任何示例。我在日常工作中使用了数十个(如果不是数百个)。

Venn0110.svg
Venn0110”。通过 Commons 在公共(public)领域获得许可.

最佳答案

“元”是模板编程的 C++ 术语。一个明显的例子是 Boost 元编程库 (MPL)。

从这个意义上说,元函数是一个函数,其域不是对象而是 C++ 构造。因此,常见的输入是类型、普通函数和其他模板。

例如,一个简单的元函数是 template<typename T> using Foo = Bar<T, int>它的输入类型为 T并作为其输出类型 Foo<T> .微不足道,是的,但普通函数也可以是微不足道的。

特征是一个元函数,其辅域是一个常量表达式,通常是 bool 值。例如。 is_foo<T>::value显然是 bool 值。从这个意义上说,最古老的特征是 sizeof(T)其密码域为size_t .

关于C++: "trait"和 "meta-function"是同义词吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32471222/

相关文章:

c++ - C/C++ - 运行系统 ("process &"),然后写入其标准输入

c++ - 我应该在非引用构造函数参数上手动调用 move 吗?

c++ - 在 macOS 中使用 RCPP 包 : Error in dyn. 加载创建 R 包时出错

c++ - 仅当类有一个特定方法时如何调用?

c++ - 包装递归可变参数模板类会改变行为。为什么?

c++ - setsockopt 返回 -1 : errno is set to 0

c++ - 有人成功地在 Eclipse 中调试了 C++ 吗?

c++ - 这个模板如何找到元组的索引?

c++ - 分析模板元程序编译时间

C++根据其模板定义一个类成员类型