bon usage de in_place_factory
J'ai une structure comme ceci:
Code:
1 2 3 4 5 6 7 8 9 10 11
| template<class A, class B>
struct element
{
A a_;
B b_;
element(A const & a):a_(a) {}
};
...
element<int, std::string> e(25);//ok |
Le membre b_ est construit avec son constructeur par défaut.
J'aimerais modifier la structure element de sorte à pouvoir construire B en utilisant une factory, par exemple:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| template<class A, class B>
struct element
{
A a_;
char b_[sizeof(B)];
template<class F>
element(A const & a,F const & f):a_(a) {f.apply<B>(b_);}
~element() {reinterpret_cast<B *>(b_)->~B();}
};
...
element<int, std::string> e(25, boost::in_place("toto"));//ok |
Mais ça ne me satisfait que moyennement. N'y aurait-il pas plus "propre" ?