C++ 是";终生;在C+中实现的限制+;?

C++ 是";终生;在C+中实现的限制+;?,c++,C++,我正在观看Herb Sutter的CppCon 2015演讲,他指的是一些终身限制,例如: template<class Key, class T, /*...*/> class map { iterator insert(const_iterator pos[[lifetime(this)]], const value_type&); template <class InIter> void insert(InIter first, InIter last [[

我正在观看Herb Sutter的CppCon 2015演讲,他指的是一些终身限制,例如:

template<class Key, class T, /*...*/> class map {
iterator insert(const_iterator pos[[lifetime(this)]], const value_type&);
template <class InIter> void insert(InIter first, InIter last [[lifetime(first)]]);
// ...
};
模板类映射{
迭代器插入(常量迭代器位置[[生命周期(此)]],常量值类型&);
模板无效插入(初始值第一,初始值最后[[寿命(第一)]);
// ...
};
所以

map<int,string> m = {{1,"one"}, {2,"two"}}, m2;
m.insert(m2.begin(), {3,"three"});// ERROR, m2.begin() points to m2, not m
m.insert(m.begin(), {3,"three"});// ok, m.begin() points to m
m.insert(m.begin(), m.end()));// 2 ERRORS: (a) params point to m, and (b) m is modifiable by m.insert
m.insert(m2.begin(), m.end()));// ERROR, param1 points to m2, but param2 points to m
m.insert(m2.begin(), m2.end());// ok, params point to m2, m2 not modifiable by m.insert
map m={{1,“一”},{2,“二”},m2;
m、 插入(m2.begin(),{3,“three”});//错误,m2.begin()指向m2,而不是m
m、 插入(m.begin(),{3,“three”});//好的,m.begin()指向m
m、 插入(m.begin(),m.end());//2个错误:(a)参数指向m,(b)m可通过m.insert修改
m、 插入(m2.begin(),m.end());//错误,param1指向m2,但param2指向m
m、 插入(m2.begin(),m2.end());//好的,参数指向m2,m2不能被m修改

我想知道,这个“生命”是否已经实现了一个功能,还是在WISHIST中?<萨特>的演讲是关于C++的C++核心准则<强> > <强>不>强。ISO过程中创建和维护的国际标准是一个国际条约,它是C++的定义。C++核心指南不是C++的一部分,而是一个社区性的工作,它描述了如何使用C++。 <> P> C++核心指南定义了一套关于代码质量和安全性的准则(包括生命安全)。它还定义了一个支持库、一组最小的代码内注释(使用属性、类型别名等)和静态分析来实施这些准则

在原始问题中,没有提到这个问题是关于国际标准、C++核心指南、主流编译器或相关的静态分析工具。还不清楚这个问题的前提是否包括对这四件事之间区别的认识

<> P.正如本文所说,C++核心指南仍在不断发展。终身安全分析部分仍然留空。同样,静态分析工具也在不断发展。但未来的发展是预料之中的,因此本段将过时


个别编译器供应商可能会决定在编译过程中加入指南的元素。但这实际上取决于编译器供应商,有些准则可能不适合在编译过程中强制执行。同样,指南的一些内容可能会在将来被提出,但很多人不适合作为国际标准的一部分,最好作为社区的准则。

哦上帝,C++起草委员会,让它停下来,让它停止。所有这些属性。。。它们就像代码的哈希标签;或C++草稿的等价物“啊,拧它,让我们称之为一天,去酒吧”,它似乎没有出现,但IDK是如何确定的。我从未见过这个网站,也没有把它列为标准属性,尽管有些人出于各种原因并不特别信任这个网站。所以我只是假设它要么在某个地方的草稿中,要么曾经是但没有被批准的,但我很可能是错的。我知道的是C++每两年都会有点古怪,拜托,伙计们!那是关于C++核心准则和相关静态分析,而不是国际标准!因为生命周期是类型的一部分:-)我认为很明显,这个“生命周期”必须是一个需要编译器消化的语言特性。