有一些例子在这里,可以适应emplace和insert,表示当行为可能会有所不同。
这些例子可能看起来有点人为,所以我将给出一个希望看起来不那么假的例子:
#include <set>
template <typename T>
T id(T x) { return x; }
int main() {
std::set<int(*)(int)> s;
s.insert(id); // OK
s.emplace(id); // error
s.emplace(id<int>); // OK
}
Run Code Online (Sandbox Code Playgroud)
insert可以推导出模板参数,id因为它知道它想要什么类型。因为emplace除非您明确指定,否则您会收到错误消息。
| 归档时间: |
|
| 查看次数: |
1094 次 |
| 最近记录: |