boost array problems.

Hi I have a struct People { const char* fname_; const char* lname_; unsigned int id; } I want to create an array of 3 people. boost::array<People, 3> = { {"Chun", "Wang", 1441}, {"Chia", "Wang", 1443}, {"Ta", "Wang", 1445} }; I get a compile time error too many initializer.

----- Mensaje original ----- De: chun ping wang <cablepuff@gmail.com> Fecha: Domingo, Agosto 5, 2007 7:09 am Asunto: [Boost-users] boost array problems. Para: boost-users@lists.boost.org, solutions@josuttis.com
Hi I have a
struct People { const char* fname_; const char* lname_; unsigned int id; }
I want to create an array of 3 people.
boost::array<People, 3> = { {"Chun", "Wang", 1441}, {"Chia", "Wang", 1443}, {"Ta", "Wang", 1445} };
I get a compile time error too many initializer.
Use an added level of brace enclosing: {{ {"Chun", "Wang", 1441}, {"Chia", "Wang", 1443}, {"Ta", "Wang", 1445} }}; See http://boost.org/doc/html/array/rationale.html for more details. HTH, Joaquín M López Muñoz Telefónica, Investigación y Desarrollo

Thanks that works. On 8/5/07, "JOAQUIN LOPEZ MU?Z" <joaquin@tid.es> wrote:
----- Mensaje original ----- De: chun ping wang <cablepuff@gmail.com> Fecha: Domingo, Agosto 5, 2007 7:09 am Asunto: [Boost-users] boost array problems. Para: boost-users@lists.boost.org, solutions@josuttis.com
Hi I have a
struct People { const char* fname_; const char* lname_; unsigned int id; }
I want to create an array of 3 people.
boost::array<People, 3> = { {"Chun", "Wang", 1441}, {"Chia", "Wang", 1443}, {"Ta", "Wang", 1445} };
I get a compile time error too many initializer.
Use an added level of brace enclosing:
{{ {"Chun", "Wang", 1441}, {"Chia", "Wang", 1443}, {"Ta", "Wang", 1445} }};
See http://boost.org/doc/html/array/rationale.html for more details. HTH,
Joaquín M López Muñoz Telefónica, Investigación y Desarrollo _______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users

Thanks that works. Buy why that works? Max On 8/5/07, "JOAQUIN LOPEZ MU?Z" <joaquin@tid.es> wrote: ----- Mensaje original ----- De: chun ping wang <cablepuff@gmail.com> Fecha: Domingo, Agosto 5, 2007 7:09 am Asunto: [Boost-users] boost array problems. Para: boost-users@lists.boost.org, solutions@josuttis.com
Hi I have a
struct People { const char* fname_; const char* lname_; unsigned int id; }
I want to create an array of 3 people.
boost::array<People, 3> = { {"Chun", "Wang", 1441}, {"Chia", "Wang", 1443}, {"Ta", "Wang", 1445} };
I get a compile time error too many initializer.
Use an added level of brace enclosing: {{ {"Chun", "Wang", 1441}, {"Chia", "Wang", 1443}, {"Ta", "Wang", 1445} }}; See http://boost.org/doc/html/array/rationale.html for more details. HTH, Joaquín M López Mu?oz Telefónica, Investigación y Desarrollo _______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users

LoadCom <LoadCom <at> sina.com> writes:
Thanks that works. Buy why that works? Max
On 8/5/07, "JOAQUIN LOPEZ MU?Z" <joaquin <at> tid.es> wrote:
Use an added level of brace enclosing: {{ {"Chun", "Wang", 1441}, {"Chia", "Wang", 1443}, {"Ta", "Wang", 1445} }}; [...]
boost::array<T,N> is an agregate class (which means you can initialize it with a brace-enclosed list) containing a member T elems[N]; which is in turn an aggregate. So, if you've got a boost::array<People,3>, the list { {"Chun", "Wang", 1441}, ... } is apt to initialize elems, and for initializing the boost::array you've got to add another level of {}: {{ {"Chun", "Wang", 1441}, ... }} although the standard allows the omission of the outer level under some circumnstances, as noted in http://boost.org/doc/html/array/rationale.html Hope it's clearer now. Best, Joaquín M López Muñoz Telefónica, Investigación y Desarrollo

Thanks. It's quite clear to me now. Max LoadCom <LoadCom <at> sina.com> writes:
Thanks that works. ? Buy why that works? ? Max
On 8/5/07, "JOAQUIN LOPEZ MU?Z" <joaquin <at> tid.es> wrote:
Use an added level of brace enclosing: {{ {"Chun", "Wang", 1441}, {"Chia", "Wang", 1443}, {"Ta", "Wang", 1445} }}; [...]
boost::array<T,N> is an agregate class (which means you can initialize it with a brace-enclosed list) containing a member T elems[N]; which is in turn an aggregate. So, if you've got a boost::array<People,3>, the list { {"Chun", "Wang", 1441}, ... } is apt to initialize elems, and for initializing the boost::array you've got to add another level of {}: {{ {"Chun", "Wang", 1441}, ... }} although the standard allows the omission of the outer level under some circumnstances, as noted in http://boost.org/doc/html/array/rationale.html Hope it's clearer now. Best, Joaquín M López Mu?oz Telefónica, Investigación y Desarrollo _______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
participants (4)
-
"JOAQUIN LOPEZ MU?Z"
-
chun ping wang
-
Joaquin M Lopez Munoz
-
LoadCom