// header for codegen-extern-template.cpp
#ifndef CODEGEN_EXTERN_TEMPLATE_H
#define CODEGEN_EXTERN_TEMPLATE_H
template <typename T>
inline T foo() { return 10; }
extern template int foo<int>();
inline int bar() { return foo<int>(); }
#endif
// header for codegen-extern-template.cpp
#ifndef CODEGEN_EXTERN_TEMPLATE_H
#define CODEGEN_EXTERN_TEMPLATE_H
template <typename T>
inline T foo() { return 10; }
extern template int foo<int>();
inline int bar() { return foo<int>(); }
#endif