How to declare a template method of a template base class using 'using'?
这里描述了两种访问模板基类成员的方法。当基类成员本身是模板时,这里将描述如何使用上面的第一个方法(this->)访问它。在这种情况下,是否也可以使用第二种方法(使用XXXX)?
例如,在下面的代码中,是否可以替换?????"有什么东西可以让代码工作吗?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | using namespace std; template<typename T> class base { public: template<bool good> void foo() { cout <<"base::foo<" << boolalpha << good <<">()" << endl; } }; template<typename T> class derived : public base<T> { public: using ???? void bar() { foo<true>(); } }; |
型
只是为了记录,尽管它没有提供任何答案或解决方案,但我目前正在与2013年的VS Express合作,我可以向您保证
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | #include <iostream> template<typename T> class base { public: template<bool good> void foo() { std::cout <<"base::foo<" << good <<">()" << std::endl; } }; template<typename T> class derived : public base<T> { public: void bar() { foo<true>(); } }; struct A{}; void main() { derived<A> a; a.bar(); } |
工作得很好…