Баг 2008 года в LLVM портит мне жизнь. Берем тестовый файлик следующего содержания:
class RPC_Service
{
public:
virtual ~RPC_Service ();
};
class EventLoggingInterface
{
virtual void
Ev (const char *file, int line, int sev, const char *fmt,
...) const = 0;
};
class RPCCore : RPC_Service, EventLoggingInterface
{
virtual void
Ev (const char *file, int line, int sev, const char *fmt, ...) const;
};
void
RPCCore::Ev (const char *file, int line, int sev, const char *format, ...) const
{
}
{
public:
virtual ~RPC_Service ();
};
class EventLoggingInterface
{
virtual void
Ev (const char *file, int line, int sev, const char *fmt,
...) const = 0;
};
class RPCCore : RPC_Service, EventLoggingInterface
{
virtual void
Ev (const char *file, int line, int sev, const char *fmt, ...) const;
};
void
RPCCore::Ev (const char *file, int line, int sev, const char *format, ...) const
{
}
Выполняем команду:
/Developer/usr/bin/llvm-g++ thunk_error.cpp -c
И в результате получаем:
thunk_error.cpp:19: error: generic thunk code fails for method ‘virtual void RPCCore::Ev(const char*, int, int, const char*, ...) const’ which uses ‘...’
Неужели придется отказаться от LLVM? Интерфейс, в моем случае, поменять врятли удастся. Вобщем писать кроссплатформенный код это еще та засада
Ты что курил? llvm-g++ и clang – это разные компиляторы!
Да, пожалуй я не слишком корректно написал. Ошибка есть как в llvm-g++, так и в clang, т.к. проблема идет из LLVM.
У меня clang компилирует без ошибок, а llvm-g++ даёт ошибку. Стоит Xcode4.
У меня предыдущая версия Clang, видимо баг поправили.
Хотя, от того что новая версия Clang собирает не особо легче, для сборке больших плюсовых проектов Clang, как мне кажется, еще сыроват. Зачастую вылезают глюки совершенно непонятного происхождения.