Ik heb wat matrix code die verschillende matrices terug geeft:
En nu heb ik een functie met een default argument:
En daar krijg ik steeds de melding op "error C2783: 'FS::mat4<T> FS::identity(void)' : could not deduce template argument for 'T'"
Nu meen ik me te herinneren dat je bij zoiets het template keyword nodig had voor een correcte parse, maar
Geeft hetzelfde. Waarom snapt de compiler niet wat T is? Ik geef toch al expliciet op 'float'?
C++:
1
2
3
4
5
6
7
8
9
10
11
| // namespace FS template <typename T> mat4<T> identity() { return mat4<T>( (T)1.0, (T)0.0, (T)0.0, (T)0.0, (T)0.0, (T)1.0, (T)0.0, (T)0.0, (T)0.0, (T)0.0, (T)1.0, (T)0.0, (T)0.0, (T)0.0, (T)0.0, (T)1.0 ); } typedef mat4<float> mat4f; |
En nu heb ik een functie met een default argument:
C++:
1
| void foo(const FS::mat4f& M = FS::identity<float>()); |
En daar krijg ik steeds de melding op "error C2783: 'FS::mat4<T> FS::identity(void)' : could not deduce template argument for 'T'"
Nu meen ik me te herinneren dat je bij zoiets het template keyword nodig had voor een correcte parse, maar
C++:
1
| void foo(const FS::mat4f& M = FS::template identity<float>()); |
Geeft hetzelfde. Waarom snapt de compiler niet wat T is? Ik geef toch al expliciet op 'float'?