История изменений
Исправление bugfixer, (текущая версия) :
Это не работает в С++ вообще.
Никакой контейнер стандартной библиотеки не может иметь тип const T потому что allocator является ill-formed.
Делов то:
#include <iostream>
#include <list>
#include <string>
#include <vector>
struct S {
explicit S(const std::string& str): str_(str) {}
const std::string str_;
};
int main()
{
typedef std::list<S> StrList;
StrList strList;
strList.emplace_back("aaa");
typedef std::vector<S> StrVec;
StrVec strVec;
strVec.emplace_back("bbb");
strVec.emplace_back("ccc");
std::cout << strList.size() << ' ' << strVec.size() << std::endl;
return 0;
}
Вы же этого хотели добиться (byko3y)? Я уверен есть стандартный wrapper template позволяющий сделать то же самое в обобщённом виде, если нет - пишется за 5 минут.
Исправление bugfixer, :
Это не работает в С++ вообще.
Никакой контейнер стандартной библиотеки не может иметь тип const T потому что allocator является ill-formed.
Делов то:
#include <iostream>
#include <list>
#include <string>
#include <vector>
struct S {
explicit S(const std::string& str): str_(str) {}
const std::string str_;
};
int main()
{
typedef std::list<S> StrList;
StrList strList;
strList.emplace_back("aaa");
typedef std::vector<S> StrVec;
StrVec strVec;
strVec.emplace_back("bbb");
strVec.emplace_back("ccc");
std::cout << strList.size() << ' ' << strVec.size() << std::endl;
return 0;
}
Вы же этого хотели добиться (byko3y)? Я уверен есть стандартный wrapper template позволяющий добиться того же, если нет - пишется за 5 минут.
Исходная версия bugfixer, :
Это не работает в С++ вообще.
Никакой контейнер стандартной библиотеки не может иметь тип const T потому что allocator является ill-formed.
Делов то:
#include <iostream>
#include <list>
#include <string>
#include <vector>
struct S {
explicit S(const std::string& str): str_(str) {}
const std::string str_;
};
int main()
{
typedef std::list<S> StrList;
StrList strList;
strList.emplace_back("aaa");
typedef std::vector<S> StrVec;
StrVec strVec;
strVec.emplace_back("bbb");
strVec.emplace_back("ccc");
std::cout << strList.size() << ' ' << strVec.size() << std::endl;
return 0;
}
Вы же этого хотели добиться (byko3y)? Я уверен есть стандартный wrapper template позволяющий добиться того же, если нет - пишется за 5 минут.