Au delà du titre , voici un code où j'aurais bien besoin d'aide : la ligne 40, qui contient un appel de fonction nécessite le mot clé template? en effet elle ne compile pas sinon (gcc 4.7)!!
Je n'avais jamais vu ça avant, et c'est le seul moyen pour que le code compile.
Existe-t-il un moyen de se séparer, et à quoi sert-il exactement pour cet appel de fonction?
Le code est purement pour illustrer le problème.
Merci d'avance!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54 #include <memory> struct opengl {}; struct opengl_window {}; template<typename api_type> struct renderer; template<> struct renderer<opengl> { typedef opengl_window render_window_type; template<typename T, typename... Args> std::shared_ptr<T> make(Args&&... args) { return std::make_shared<T>( std::forward<Args>(args)... ); } }; template<typename api_type> struct app { typedef renderer<api_type> renderer_api_type; typedef typename renderer_api_type::render_window_type render_window_api_type; std::shared_ptr<renderer_api_type> m_renderer; std::shared_ptr<render_window_api_type> m_window; void test() { m_renderer = std::make_shared<renderer_api_type>(); m_window = m_renderer->template make<render_window_api_type>(); //m_window = m_renderer->make<render_window_api_type>(); } }; int main() { app<opengl> a; a.test(); return 0; }
Bonne fêtes à tous et à toutes!
Partager