std::set被转换成MySet是很奇怪的,但是如何避免呢?
#include <bits/stdc++.h>
struct MySet : public std::set<int> {
MySet(const std::set<int>& s) {
}
};
std::set<int> get(int i) {
return std::set<int>{i};
}
int main() {
const MySet& a = get(0);
std::cout << a.empty() << std::endl; // true
}
const MySet& a = get(0);
应给予编译错误。
1条答案
按热度按时间aiazj4mn1#
常量MySet& a = get(0);应编译错误
这可以通过删除转换因子
MySet::MySet(const std::set<int>&)
或使其显式来完成,如下所示: