История изменений
Исправление fsb4000, (текущая версия) :
Ладно, похоже я не в том месте вопрос задал.
Ты на https://cppinsights.io/ перешёл или нет?
Что за люди то тут такие, не могут по одной ссылке перейти. Что оп, что ты.
Вот как твой main выглядит в cppinsight.
int main()
{
vector<int> v = std::vector<int, std::allocator<int> >();
v.reserve(20);
v.operator=(std::initializer_list<int>{3, 4});
vector<int> v2 = std::vector<int, std::allocator<int> >();
v2.reserve(20);
v2.operator=(std::vector<int, std::allocator<int> >{std::initializer_list<int>{3, 4}, std::allocator<int>()});
return 0;
}
Теперь то понятно, почему std::vector во втором случае создаётся, а в первом нет?
И в моём первом ответе нужно было смотреть не на constexpr(он есть у обоих перегрузок оператора =), а на тип который он принимает.
std::initializer_list<T> ilist
и
vector&& other
Исходная версия fsb4000, :
Ладно, похоже я не в том месте вопрос задал.
Ты на https://cppinsights.io/ перешёл или нет?
Что за люди то тут такие, не могут по одной ссылке перейти. Что оп, что ты.
Вот как твой main выглядит в cppinsight.
int main()
{
vector<int> v = std::vector<int, std::allocator<int> >();
v.reserve(20);
v.operator=(std::initializer_list<int>{3, 4});
vector<int> v2 = std::vector<int, std::allocator<int> >();
v2.reserve(20);
v2.operator=(std::vector<int, std::allocator<int> >{std::initializer_list<int>{3, 4}, std::allocator<int>()});
return 0;
}
Теперь то понятно, почему std::vector во втором случае создаётся, а в первом нет?