ldionne added a comment. More specifically, the following program always causes the vtable for `__base<int(float)>` to be internal:
cat <<EOF | clang++ -xc++ - -std=c++11 && nm --demangle a.out #include <functional> int go(float) { return 0; } std::function<int(float)> foo() { return go; } int main() { foo()(3.3f); } EOF That's true with or without this patch, and with or without `-fvisibility=hidden`. We always get: ... U vtable for __cxxabiv1::__si_class_type_info 0000000100003178 s vtable for std::__1::__function::__base<int (float)> 00000001000030f0 s vtable for std::__1::__function::__func<int (*)(float), std::__1::allocator<int (*)(float)>, int (float)> 0000000100003218 s vtable for std::__1::bad_function_call ... Repository: rCXX libc++ CHANGES SINCE LAST ACTION https://reviews.llvm.org/D48680/new/ https://reviews.llvm.org/D48680 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits