Я пытался использовать список инициализатора C ++ 0x в качестве аргумента вызова конструктора следующим образом:
Foo<float> foo("Foo 1", std::vector<const char *>({ "foo A", "foo B" }) );
с конструктором
Foo(const char *name, std::vector<const char *> &foos)
С этим конструктором компиляторпожаловался:
error: no matching function for call to Foo<float>::Foo(
const char [5], std::vector<const char *, std::allocator<const char *> >)
note: candidates are: Foo<T>::Foo(const char *, std::vector<const char *,
std::allocator<const char *> >&) [with T = float]
Однако, когда я изменил конструктор на
Foo(const char *name, std::vector<const char *> foos)
Все заработало как положено.Почему первый конструктор не работает?Я думал, что вектор может быть создан вместо вызова конструктора и передан по ссылке, но, очевидно, есть некоторая проблема.Кто-нибудь может объяснить это?
Спасибо
Кстати.Я использую g ++ версии 4.4.5
РЕДАКТИРОВАТЬ: Благодаря правильным ответам ниже, я также нашел , почему я не могу сделать это .