J'ai une structure comme ceci:Le membre b_ est construit avec son constructeur par défaut.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
J'aimerais modifier la structure element de sorte à pouvoir construire B en utilisant une factory, par exemple:
Mais ça ne me satisfait que moyennement. N'y aurait-il pas plus "propre" ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Partager