2012-11-23 5 views
3

Supposons que j'ai une fonction qui prend un argument de valeur r et que je souhaite fournir une valeur par défaut, comment puis-je le spécifier correctement? Ce qui suit fonctionne bien avec gcc 4.7.0, mais échoue avec icpc 13.0.1.Quelle est la valeur par défaut correcte pour un argument de référence de valeur r?

struct data { 
    int _data[10]; 
    data() = default; 
    data(data&&) = default; 
    data(const data&) = default; 
}; 
void func(data&& = data{}); 

ICPC se plaint que

error: type name is not allowed 
void func(data&& = data{}); 
       ^

Est-ce exact? Quelle est la syntaxe correcte?

+2

Est-ce que icpc prend en charge la syntaxe d'initialisation universelle ici? Avez-vous essayé un initialiseur de valeur 'data && = data()'? – ecatmur

+0

@ecatmur en effet cela fonctionne. donc cela semble un problème d'Intel. La version 13.0.1 est censée être compatible avec gcc 4.7.0, mais ce n'est pas le cas! – Walter

Répondre

2

Il apparaît que icpc 13.0.1 ne prend pas en charge la syntaxe d'initialisation universelle dans les arguments par défaut. Cela fonctionne:

void func(data&& = data()); 
         ^^ value-initialization 
Questions connexes