У меня есть сомнение, у меня есть класс, мы можем сказать «a», у которого есть метод «b», который в теле устанавливает состояние c std :: map. Вопрос в следующем:
следующий код гарантирует, что конструктор std :: map вызывается? Или у нас неопределенное поведение?
ах
class a {
public:
void b();
};
a. cpp
void a::b(){
static std::map<int,int> mapB;
bool notFound = mapB.find(0) == mapB.end();
std::cout << "notFound: " << std::endl;
}
В моем случае этот код работает, и вывод:
notFound: 1
Но это правильно? Или это только случай неопределенного поведения?
Еще одно сомнение: если у меня есть карта с классом вместо базового c типа, это то же самое? Я сообщаю пример кода:
c .h
class c {
public:
int i;
};
ах
class a {
public:
void b();
};
а. cpp
void a::b(){
static std::map<int,c> mapB;
bool notFound = mapB.find(0) == mapB.end();
std::cout << "notFound: " << std::endl;
}