A. Jiang

Results 245 comments of A. Jiang

此 issue 应该可以关闭了?

我认为析构单个对象的函数应该叫 `destroy_at` (我们可以引入新函数,然后弃用旧的析构单对象版本)。 另外应该用类似 [`std::addressof`](https://en.cppreference.com/w/cpp/memory/addressof) 的机制避免 ADL 和重载 `operator&` 的问题。

首先这不是复制构造函数。 两个重载所要表达的是:如果 `Other1` 到 `Ty1` 和 `Other2` 到 `Ty2` 存在隐式转换,才提供前一个重载使得 `pair` 能隐式转换成 `pair`。否则 `pair` 只能从 `pair` 显式构造。 这种设计的目的是避免意外地引入“使用隐式转换的方式进行了本来要求为显式的转换”,参见 [N4387](https://wg21.link/n4387) 。

> 萌新求问大佬,为什么要用U替换掉Ty,直接用Ty不是也可以判断是否可以拷贝构造吗?还有pair参数是Ty,U不是一定等于Ty吗,为什么还要判断是否可以隐式转换呢? 1. 只有在模板头引入的模板形参带来的替换失败才不是错误。 2. `is_convertible::value` 不一定对所有对象类型均为 `true` ,例如 `Ty` 可以是不支持复制和移动构造的类或是数组。

`*(int*)(v.begin() + 10) = 200;` 这行怎么看都是错的。 最好先提供一个正确的代码。

我们不该用 `binary_function`。

目前这个区别没有意义。 MyTinySTL 的容器只支持自己的 `mystl::allocator` ,而同系列的分配器都能彼此间相互隐式转换。

不会重定义。类内的是非模板函数,它与函数模板不对应。 但这个设计会导致类外的 `operator==` 和 `operator

我想我们可以把 MyTinySTL 的所有比较运算符改成友元。虽然这和标准库不一致,但可能更好。 另外在 C++20 模式下不再需要单独的关系运算符或 `operator!=` ,仅提供 `operator==` 和 `operator` 即可。

> > 我想我们可以把 MyTinySTL 的所有比较运算符改成友元。虽然这和标准库不一致,但可能更好。 另外在 C++20 模式下不再需要单独的关系运算符或 ,仅提供 和 即可。`` operator!=``operator==``operator `` > > 谢谢解答!对类模板的友元了解的不是很透彻,请教一下大佬这里的`friend bool operator==(const set& lhs, const set& rhs)`set不加模板参数是因为是在类模板内声明并定义的吗。 是的,此处的 `set` 是[注入类名](https://zh.cppreference.com/w/cpp/language/injected-class-name)([injected-class-name](https://en.cppreference.com/w/cpp/language/injected-class-name)),可以自动指代类模板的当前特化。