https://llvm.org/bugs/show_bug.cgi?id=30400
Richard Smith <richard-l...@metafoo.co.uk> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED CC| |richard-l...@metafoo.co.uk Resolution|--- |DUPLICATE --- Comment #1 from Richard Smith <richard-l...@metafoo.co.uk> --- Note that Clang 3.9 implements http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0136r1.html and the other cited compilers do not. Under p0136r1, inheriting a constructor works much more like inheriting any other member function. Note that this is rejected by all referenced compilers: struct R { void f() noexcept; }; struct S : R { using R::f; template<class = void> void f(); }; static_assert(!noexcept(S{}.f()), ""); So, this is working correctly per the standard + current DRs. Whether or not that *should* work is a separate question, but it seems sensible to me that the behavior be the same for constructors and other member functions. (We could certainly imagine changing the rules for using-declarations so that a function from a derived class is considered better than one from a base class, before the template/non-template tiebreaker.) Resolving as a duplicate of PR30305, as this is another "Implementing p0136r1 changes meaning of existing code" issue. *** This bug has been marked as a duplicate of bug 30305 *** -- You are receiving this mail because: You are on the CC list for the bug.
_______________________________________________ llvm-bugs mailing list llvm-bugs@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs