i have 2 classes, a
can constructed string
, defines conversion string
a
.
class { public: a(std::string s) : s_(s) {} private: std::string s_; }; class b { public: b() : v_{"foo", "bar"} {} private: std::vector<a> v_; };
class b
has vector
member containing a
objects. constructor initializes vector (v_
) strings. not work. why?
essentially, std::vector<a>
expects constructed using initializer list containing a
objects. compiler cannot implicitly convert initializer list of std::string
objects 1 containing a
s, , none of other std::vector
constructors take 2 std::string
s (and if 1 constructor did, wouldn't have meaning you're looking for).
if write
b() : v_{a("foo"), a("bar")} {}
instead, works. have initializer list of a
s, gets interpreted correctly.
Comments
Post a Comment