// RUN: clang-cc -fsyntax-only -verify %s
typedef void (*thread_continue_t)();

extern "C" {
extern void kernel_thread_start(thread_continue_t continuation);
extern void pure_c(void);
}

class _IOConfigThread
{
public:
    static void main( void );
};


void foo( void )
{
	kernel_thread_start(&_IOConfigThread::main);
	kernel_thread_start((thread_continue_t)&_IOConfigThread::main);
	kernel_thread_start(&pure_c);
}
