Erreurs, bugs, questions - page 1691

 
Andrey Dik:

Quelles valeurs d'écart la fonctionCopySpread() produit-ellepour la période correspondante du graphique?

Il n'est pas clair s'il s'agit de la moyenne, du minimum ou du maximum, et l'aide de la fonction ne dit rien à ce sujet.

 
Andrey Dik:

Quelles valeurs d'écart la fonctionCopySpread() produit-ellepour la période correspondante du graphique?

Il n'est pas clair s'il s'agit de la moyenne, du minimum ou du maximum, et l'aide de la fonction ne dit rien à ce sujet.

Où, dans le compte ou dans le testeur
 
Alexander Bereznyak:
où, dans le compte ou dans le testeur
ni l'un ni l'autre ne figure dans la référence.
 

appel ambigu à une fonction surchargée avec les mêmes paramètres

class A
{
public:  
//  void func( const int ) const {} // если заменить на это - будет компилироваться
  void func( const int ) {}

//  void func( const int& ) const {} // если заменить на это - будет компилироваться
  void func( const int& ) {}
};

void OnStart()
{
  A a;

  a.func(0);  

  int i1 = 0;
  a.func(i1);  

  const int i2 = 0;
  a.func(i2); // 'func' - ambiguous call to overloaded function with the same parameters  
}

S'agit-il d'un malentendu ou d'un bug ?

 
fxsaber:

Est-ce un malentendu ou un bug ?

Si je comprends bien, ce code devrait se comporter de la même manière dans les deux cas.
 
fxsaber:

appel ambigu à une fonction surchargée avec les mêmes paramètres

S'agit-il d'un malentendu ou d'un bug ?

Un malentendu.

Eh bien, c'est tout, j'ai répondu. ))))

 
Комбинатор:
Si je comprends bien, ce code doit se comporter de la même manière dans les deux cas.

C'est ce que je pense aussi.

Sergei Vladimirov:

Un malentendu.

Eh bien, c'est tout, j'ai répondu. ))))

Ce stupide exemple de code source a pris beaucoup de temps à créer. Mon sens de l'humour a presque disparu pendant que je le créais.

 
fxsaber:

Cet exemple de source muette a pris beaucoup de temps à créer. Mon sens de l'humour a presque disparu pendant que je le créais.

(gloussements) Ok. )

Dans les trois versions de l'appel, il est impossible de comprendre si l'argument est passé par valeur ou par référence, de sorte que le compilateur ne peut pas choisir la fonction à appeler. Et le modificateur const les surcharge : void f(){} et void f() const {} sont des fonctions différentes. Si, dans votre exemple, vous déclarez l'une des méthodes comme const, l'incertitude disparaîtra : le compilateur sélectionnera la méthode souhaitée selon que l'appel est effectué à partir d'un objet constant ou non (le type d'argument dans votre exemple n'a pas d'importance).

Votre objet a n'est pas une constante, donc la méthode sans const sera appelée les trois fois. Si vous déclarez un objet comme constant (A const a ;), alors une méthode constante sera appelée.

Voyez ce que sera le résultat :

class A
{
public:  
  void func() {Print("Non const");}
  void func() const {Print("Const");}
};

void OnStart()
{
        A a;
        A const b;
        
        a.func();
        b.func();
}
 
Sergei Vladimirov:

Bien. )

Dans les trois variantes de l'appel, il est impossible de comprendre si un argument est passé par valeur ou par référence, c'est pourquoi le compilateur ne peut pas choisir la fonction à appeler. Et le modificateur const les surcharge : void f(){} et void f() const {} sont des fonctions différentes. Si, dans votre exemple, vous déclarez l'une des méthodes comme const, l'incertitude disparaîtra : le compilateur sélectionnera la méthode souhaitée selon que l'appel est effectué à partir d'un objet constant ou non (le type d'argument dans votre exemple n'a pas d'importance).

Votre objet a n'est pas une constante, donc la méthode sans const sera appelée les trois fois. Si vous déclarez l'objet comme constant (A const a ;), alors la méthode constante sera appelée.

Vous l'auriez fait en premier. L'erreur est UNIQUEMENT ici
const int i2 = 0;
a.func(i2); // 'func' - ambiguous call to overloaded function with the same parameters

Tous les appels avant cela passent sans problème.

Regardez ce que ça imprime :

Ceci provient d'un autre fil de discussion.

 

Deux sources ayant le même contenu occupent un nombre différent d'octets (deux fois plus différent).

Il semble qu'il y ait eu des manipulations d'unicode à un moment donné.

D'une manière générale, comment faire en sorte qu'un gros fichier occupe deux fois moins d'octets ? En même temps, pour que le texte de la source reste inchangé.