标准概念清单?

时间:2014-06-15 10:20:49

标签: c++ c++-concepts

从我记忆中来看,C ++有Mergable,Container,Comparable,Sortable,Arithmetic等概念。我在这里和那里看过它们但我从未见过列表。我在哪里可以找到标准C ++概念列表?

-edit-人们很困惑,但我的意思是this slide中的示例模板行有Container和Sortable。还有什么?

3 个答案:

答案 0 :(得分:9)

  

从我记忆中来看,C ++有Mergable,Container,Comparable,Sortable,Arithmetic等概念。我在这里和那里看过它们但我从未见过列表。我在哪里可以找到标准C ++概念列表?

什么是概念

概念是一个术语,指的是必须由编译器强制执行的类型需求的形式化。 This draft(N3580)包含所有细节。

什么是类型要求

类型需求是一组需求,甚至在C ++ 03标准中定义,必须由程序员强制执行,以便对所述类型应用某些操作。标准从不称它们为概念

类型要求清单

我认为你的意思是类型要求

  • 您提到Container
  • 您提到Comparable
  • 记住 C ++的事实有"概念"

所以,这里是类型要求列表,您还可以在其中找到ContainerCompare(由cppreference组织):

基本

  • 可缺省
  • MoveConstructible
  • 复制构造
  • MoveAssignable
  • CopyAssignable
  • 可破坏

布局

  • TriviallyCopyable
  • TrivialType
  • StandardLayoutType
  • PODType

库宽

  • EqualityComparable的
  • 小于关系
  • 可交换
  • ValueSwappable
  • NullablePointer
  • 哈希
  • 分配器
  • 函数对象
  • 可赎回
  • 谓词
  • BinaryPredicate
  • 比较

容器

  • 容器
  • ReversibleContainer
  • AllocatorAwareContainer
  • SequenceContainer
  • AssociativeContainer
  • UnorderedAssociativeContainer

容器元素

  • CopyInsertable
  • MoveInsertable
  • EmplaceConstructible

迭代

  • 迭代
  • InputIterator的
  • 输出迭代
  • ForwardIterator
  • BidirectionalIterator
  • RandomAccessIterator的

流I / O功能

  • UnformattedInputFunction
  • FormattedInputFunction
  • UnformattedOutputFunction
  • FormattedOutputFunction

随机数发生器

  • SeedSequence
  • UniformRandomNumberGenerator
  • RandomNumberEngine
  • RandomNumberEngineAdaptor
  • RandomNumberDistribution

并发

  • BasicLockable
  • 可锁定
  • TimedLockable
  • 互斥
  • TimedMutex
  • SharedTimedMutex

其他

  • UnaryTypeTrait
  • BinaryTypeTrait
  • TransformationTrait
  • 时钟
  • TrivialClock
  • CharTraits
  • pos_type
  • off_type
  • BitmaskType
  • LiteralType

答案 1 :(得分:4)

  

在哪里可以找到标准C ++概念列表?

显然,没有,它还没有达到标准;另请参阅Is the Committee Draft of Standard C++14 public?尽管如此,相关文件似乎是Concepts Lite: Constraining Templates with Predicates (N3580)A Concept Design for the STL (N3351)。该列表截至2014年6月15日,取自N3580:

类型特征

  • Equality_comparable
  • Totally_ordered
  • 可移动
  • 能够复制
  • 半规则
  • 功能
  • Regular_function
  • 谓词
  • 关系

迭代器概念

  • 的iterator_category
  • VALUE_TYPE
  • Difference_type
  • 可读
  • 可写
  • 可交换
  • 可变的
  • 可推进
  • 可递增
  • Input_iterator
  • Output_iterator
  • Forward_iterator
  • Bidirectional_iterator
  • Random_access_itertor

算法约束

  • Indirectly_movable
  • Indirectly_copyable
  • Indirectly_swappable
  • Indirectly_equal
  • Indirectly_ordered
  • Indirectly_comparable
  • 可排序
  • 可合并

答案 2 :(得分:1)

简而言之," 概念是一组需求,包括有效表达式,关联类型,不变量和复杂性保证。满足要求的类型被称为建模这个概念。概念可以扩展另一个概念的要求,称为细化。"

来源:http://www.boost.org/community/generic_programming.html#concept

有几个可用的概念列表:

有关进一步说明,请参阅"概念和建模"以及" Refinement"在下面的: https://www.sgi.com/tech/stl/stl_introduction.html

另见:

您可能也有兴趣: