В следующей программе конструктор string вызывается 2 раза:
#include <set>
#include <string>
int main()
{
using namespace std;
set<string> ss;
ss.insert("123");
}
Можно было бы обойтись без создания временного string, если бы класс set определял insert как
template <typename T> pair<iterator, bool> insert(const T&);
, где T — любой тип преобразуемый к типу элементов контейнера.
Имеет ли смысл такое шаблонное определение insert в классе set, или проблема решается проще?