【发布时间】:2025-11-17 22:10:02
【问题描述】:
istream operator>> 需要对现有对象的引用。这意味着他们所做的是分配而不是就地构建,对吧?
好吧,我怎样才能跳过初始构造?也许编译器可以优化它,但我可能仍然需要提供我宁愿不需要的参数。这完全可以用 istream 完成吗?
...我希望能够拥有,比如说,
template <typename T> void emplace_from(std::istream stream, T* place);
适用于 stream >> my_t_variable 适用的所有类型的 T。虽然,不可否认,这个函数声明看起来有点难看。
【问题讨论】:
-
不适用于标准设施 AFAIK。您能否举一个您希望实现的语法示例?
-
标准
emplace调用构造函数。您将构造函数参数传递给它,然后它将它们转发给构造函数。您提议的emplace无法构造任何东西,因为它不知道如何从流中提取构造函数参数。它不知道要使用 哪个 构造函数!
标签: c++ operator-keyword tokenize istream emplace