Retour de fonction inattendue avec gcc 4.7.2 et 4.8.0
Bonjour à tous,
J'ai un problème confirmé avec le code ci-dessous, l'addition de deux int16_t me renvoi un int! Est-ce que c'est un comportement normal? Parce que du coup je suis obligé d'employer un static_cast sur le résultat car sinon je prends des warnings de gcc.
Code:
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
| #include <iostream>
template<typename T>
struct f{
static constexpr const char *str = "unknown"; };
template<>
struct f<int>{
static constexpr const char *str = "int"; };
template<>
struct f<int16_t>{
static constexpr const char *str = "int16_t"; };
int main(){
std::cout << f<double>::str << std::endl;
std::cout << f<int16_t>::str << std::endl;
int16_t a(0), b(0);
std::cout << f< decltype(a+b) >::str << std::endl;
} |
Et si dessous la sortie :
Merci beaucoup d'avance ! :aie: