2014-04-27 6 views
8

std::defaultfloat non sembra essere definito in GCC, nonostante sia in the standard (penso che sia §27.5.6.4). L'ho isolato in questo semplice programma:errore: 'defaultfloat' non è un membro di 'std'

// test.cpp 
#include <iostream>                

int main()                  
{                    
    std::cout << std::defaultfloat << 1.3;          
    return 0;                 
} 

Questo compila in VC++ 11. Ho provato a compilare questo con g ++ 4.7.2 e g ++ 4.9.0 utilizzando entrambi questi comandi:

g++ test.cpp g++ test.cpp -std=c++11

Ho anche provato an online compile on GCC 4.8.1 here, sempre con lo stesso risultato:

[email protected]:~/Documents/test$ g++ test.cpp -std=c++11 
test.cpp: In function ‘int main()’: 
test.cpp:5:15: error: ‘defaultfloat’ is not a member of ‘std’ 
    std::cout << std::defaultfloat << 1.3; 

Perche 'si ottengono questo errore?

+0

Hm. Strano. Avete un'implementazione di libreria standard C++ che supporta C++ 11? –

+0

Bene, ho appena installato GCC 4.9.0 e ho avuto lo stesso problema con l'installazione standard di GCC 4.7.2 fornita con Debian. È questo che vuoi dire? – arman

+0

beh, se fosse installato senza problemi, mi aspetterei che funzionasse. Potresti dirmi la versione di glibc (presumo che sia ciò che viene fornito con GCC)? –

risposta

7

GCC libstdc++ non supporta questi manipolatori C++ 11 in nessuna delle versioni che sono state compilate. Un patch è stato inviato esattamente un mese fa

+1

Un anno dopo, usando G ++ 4.9.2 questo manipolatore non è ancora supportato. Se si desidera utilizzare tutte le funzionalità di C++ 11, si consiglia vivamente di utilizzare Clang. –