mardi 5 janvier 2016

Inline use of non-default explicit constructor for a member object

In C++11 (or future), is there some simple variation of the following which is legal?

class A
   {
public:
   std::vector<char> b(123); // declare a vector with 123 elements
   };

The closest I can find is a bit clunky, and maybe inefficient...

class A
   {
public:
   std::vector<char> b = std::vector<char>(123);
   };

I'm trying to avoid using an initializer list. I prefer to consolidate the declaration and initialization of b into a single line of code. The vector will always be the same size.

I'm using std::vector in this example, but presumably the answer would be more generally applicable.


For good measure, here's the error message from gcc version 4.8:

error: expected identifier before numeric constant std::vector b(123);

and here's the message from clang version 3.7:

error: expected parameter declarator std::vector b(123);

Aucun commentaire:

Enregistrer un commentaire