// RUN: %clang_cc1 -emit-llvm -triple %itanium_abi_triple %s -o - | FileCheck %s

// CHECK-NOT: ZN12basic_stringIcEC1Ev
// CHECK: ZN12basic_stringIcED1Ev
// CHECK: ZN12basic_stringIcED1Ev
template<class charT>
class basic_string
{
public:
	basic_string();
	~basic_string();
};

template <class charT>
__attribute__ ((__visibility__("hidden"), __always_inline__)) inline
basic_string<charT>::basic_string()
{
}

template <class charT>
inline
basic_string<charT>::~basic_string()
{
}

typedef basic_string<char> string;

extern template class basic_string<char>;

int main()
{
	string s;
}
