Salut à tous,
J'essaie de compiler un gros projet (qui compile sous g++ et MSVC avec plein de warning activés et -Werr) avec CLang.
Mais mon projet ne compile pas, j'ai reproduit le problème de compilation avec le petit code suivant:
$ cat clang.cpp
#include <iostream>
template<typename PTR1, typename PTR2>
class Foo
{
private:
PTR1 _t1;
PTR2 _t2;
public:
Foo(PTR1 t1 = NULL, PTR2 t2 = NULL) : _t1(t1), _t2(t2) {}
};
// aucun probleme pour clang
void test(int a, const Foo<int*,int*> & myset = Foo<int*,int*>())
{
std::cout << "a=" << a << std::endl;
}
class Bar
{
public:
// probleme pour clang avec la meme definition mais dans une classe
void test(int a, const Foo<int*,int*> & myset = Foo<int*,int*>())
{
std::cout << "a=" << a << std::endl;
}
};
int main()
{
test(5);
Bar bar;
bar.test(4);
return 0;
}
$ clang++ -o test clang.cpp
clang.cpp:23:63: error: expected ')'
void test(int a, const Foo<int*,int*> & myset = Foo<int*,int*>())
^
clang.cpp:23:11: note: to match this '('
void test(int a, const Foo<int*,int*> & myset = Foo<int*,int*>())
^
clang.cpp:23:58: error: expected '>'
void test(int a, const Foo<int*,int*> & myset = Foo<int*,int*>())
^
clang.cpp:33:12: error: too few arguments to function call, expected 3, have 1
bar.test(4);
~~~~~~~~ ^
clang.cpp:23:2: note: 'test' declared here
void test(int a, const Foo<int*,int*> & myset = Foo<int*,int*>())
^
3 errors generated.
La signature de la fonction Bar::test est la même que test mais il semblerait que l'analyse syntaxique n'y arrive pas dans le cas d'une méthode de classe.
S'agit-t-il d'un bug de clang ?
$ clang++ -v
Ubuntu clang version 3.0-6ubuntu3 (tags/RELEASE_30/final) (based on LLVM 3.0)
Target: x86_64-pc-linux-gnu
Thread model: posix
Même problème avec la version de debian testing.
Merci de vos réponses
errno
# Bug
Posté par errno . Évalué à 4.
Je viens de trouver le bug dans le bugzilla de LLVM => http://llvm.org/bugs/show_bug.cgi?id=13657
Désolé du dérangement !
[^] # Commentaire supprimé
Posté par Anonyme . Évalué à 4.
Ce commentaire a été supprimé par l’équipe de modération.
[^] # Re: Bug
Posté par errno . Évalué à 1.
En effet, merci de l'astuce.
Je n'ai plus qu'a changé mes habitudes pour les valeurs par défaut contenant des virgules.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.