Problem when using template as the base class?

Peng Yu
Fri Sep 22 23:47:00 GMT 2006

> I have the following program. It also includes the non-template
> equivalent class, which works fine. If you uncomment the comments, you
> will see the compiler errors. The errors are also shown below. Do you
> know what is wrong? Is it a bug of the compiler?
> BTW, I use g++-3.4.

I corrected the error by adding template keyword. But I don't
understand why "template" keyword is need. Would you please help me?

#include <iostream>
#include <boost/program_options.hpp>

class base_arguments {
    base_arguments() {}
    boost::program_options::variables_map _vm;

template <typename T>
class plot_arguments : public T {
    plot_arguments() {}
    int boundary_pad() const {
      return T::_vm["boundary_pad"].template as<int>();

class plot_arguments1 : public base_arguments {
    int boundary_pad() const {
      return base_arguments::_vm["boundary_pad"].as<int>();

int main(int argc, char *argv[])
  plot_arguments<base_arguments> arg();
  plot_arguments1 arg1();

More information about the Gcc-help mailing list