有两个原因.首先,从结构上讲,可选的< T&>相当于一个T *.它们可能有不同的接口,但它们做同样的事情.
第二点是,标准委员会实际上没有就确切如何选择< T&>的问题达成共识.应该表现.
考虑以下:
optional<T&> ot = ...;T t = ...;ot = t;
最后一行应该怎么做?它是通过ot和copy-assign引用对象,这样* ot == t?或者它应该重新绑定存储的引用本身,例如ot.get()==& t?更糟糕的是,在转让之前它会是do different things based on whether ot
was engaged or not吗?
有些人会期望它做一件事,有些人会期望它做另一件事.所以无论你选择哪一方,都会让人感到困惑.
如果您使用了T *,那么很明显会发生以下情况:
T* pt = ...;T t = ...;pt = t; //Compile error. Be more specific.*pt = t; //Assign to pointed-to object.pt = &t; //Change pointer.总结
以上是内存溢出为你收集整理的c – 为什么GCC拒绝参考的std :: optional?全部内容,希望文章能够帮你解决c – 为什么GCC拒绝参考的std :: optional?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)