https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66350
Bug ID: 66350 Summary: typename should be forbidden in inhering constructors Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: vgheorgh at gmail dot com Target Milestone: --- The code below #include <memory> template <class T, class Deleter = std::default_delete<T>> class unique_ptr_wrapper: public std::unique_ptr<T, Deleter> { public: using typename std::unique_ptr<T, Deleter>::unique_ptr; // typename should be forbidden here }; int main() { unique_ptr_wrapper<int> upw{new int{42}}; } should be ill formed (no typename required), since we inherit a constructor, which is not a dependent type. IMO, a diagnostic should be required, however g++ compiles the program without any warnings. Tested with gcc4.9/5.1/6 HEAD. More details: http://stackoverflow.com/q/30554119/3093378