LINUX.ORG.RU

c++ clang


0

3
#include <string>
#include <map>

class xxx
{
public:
    static void yyy(const std::map<std::string, std::string>& zzz = std::map<std::string, std::string>())
    {
    }
};



int main()
{
    xxx::yyy();


    return 0;
}

в одном коде (не моем) вот такое компилируется g++ но не хочет clang. как победить? вроде лечил такое как то но что то не вспоминается как...

g++ 4.7.1 clang version 3.1-8 x86_64

★★★★

причем если метод сделать просто функцией - работает:

#include <string>
#include <map>

static void yyy(const std::map<std::string, std::string>& zzz = std::map<std::string, std::string>())
{
}

int main()
{
    yyy();


    return 0;
}
quest ★★★★
() автор топика
Ответ на: комментарий от encyrtid
$ clang test.cpp -c
test.cpp:7:102: error: expected ')'
  ...std::string>& zzz = std::map<std::string, std::string>())
                                                          ^
test.cpp:7:20: note: to match this '('
    static void yyy(const std::map<std::string, std::string>& zzz =...
                   ^
test.cpp:7:89: error: expected '>'
  ...std::string>& zzz = std::map<std::string, std::string>())
                                             ^
test.cpp:16:14: error: too few arguments to function call, expected 2, have 0
    xxx::yyy();
    ~~~~~~~~ ^
test.cpp:7:5: note: 'yyy' declared here
    static void yyy(const std::map<std::string, std::string>& zzz =...
    ^
3 errors generated.
quest ★★★★
() автор топика
Ответ на: комментарий от panter_dsd
#include <string>
#include <map>

class xxx
{
public:
  typedef std::map<std::string, std::string> SomeType;
  static void yyy(const SomeType& zzz = SomeType ())
  {
  }
};



int main()
{
  xxx::yyy();


  return 0;
}
panter_dsd ★★★★
()
Ответ на: комментарий от panter_dsd

спасибо, помогло!

#include <string>
#include <map>

class xxx
{
public:
    typedef std::map<std::string, std::string> fuck;
    static void yyy(const fuck& zzz = fuck())
    {
    }
};



int main()
{
    xxx::yyy();


    return 0;
}
quest ★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.