templates - C++ using statement in member function scope -


if want use member of template base class template derived class, have bring scope such:

template <typename t> struct base {     void foo(); };  template <typename t> struct derived : base<t> {     using base<t>::foo; }; 

why can't place using statement local scope, other using statements?

template <typename t> struct base {     void foo(); };  template <typename t> struct derived : base<t> {     void f()     {         using base<t>::foo;  // error: base<t> not namespace     } }; 

the standard (draft 3225) says in [namespace.udecl]:

a using-declaration class member shall member-declaration. [ example:

struct  x  {     int  i;     static  int  s; }; void  f()  {     using  x::i; // error:  x::i class member                  // , not member declaration.     using  x::s; // error:  x::s class member                  // , not member declaration. } 

— end example ]

a using-directive has no such restriction, ([namespace.udir]):

when looking namespace-name in using-directive, namespace names considered


Comments

Popular posts from this blog

linux - Mailx and Gmail nss config dir -

c# - Is it possible to remove an existing registration from Autofac container builder? -

php - Mysql PK and FK char(36) vs int(10) -