Так что я просто приведу быстрый пример и могу использовать некоторую помощь в понимании того, что случилось
Я запускаю тест с закомментированной переменной «RandomNumber», и вывод получился
Construct
Invoke
Destruct
Итак, я снова запустил тест, но с некомментированной переменной «RandomNumber», и результат был
Construct
Destruct
Invoke
Я пробовал это много раз с одним и тем же результатом, но я не совсем понимаю, почему эта переменная меняет время жизни тестера ... Тест:
struct Container
{
template<typename T>
Container(T&& O) : Data((void*)std::addressof(O)) {}
private:
void* Data;
//std::weak_ptr<int> RandomNumber;
};
struct Tester
{
Tester() { std::cout << "Construct" << std::endl; }
~Tester() { std::cout << "Destruct" << std::endl; }
};
void TestFunction1(const std::vector<Container>& Data)
{
std::cout << "Invoke" << std::endl;
}
int main()
{
TestFunction1({ Tester() });
return 0;
}