Новая версия платформы MetaTrader 5 build 4410: улучшения в работе - страница 19

 
Renat Fatkhullin #:
о, поставил тикет на исп

Добрый вечер. Проверьте, пожалуйста, и вот такую особенность в работе компилятора MQL5 (воспроизводится на билде 4424)

Следующий код не компилируется

namespace ns
{
  template<typename T>
  class A
  {
  public:
    A(int) {}
  };
}

class B : public ns::A<string>
{
public:
  B() : A<string>(1) {}
};

Если класс A объявить в глобальном пространстве имен, или сделать его не шаблонным, то все хорошо. А вот шаблон в именованном пространстве имен компилятор не может "переварить".

Нашел воркэраунд - помогает объявить шаблон за пределами неймспейса.

Так собирается:

namespace ns
{
  template<typename T>
  class A
  {
  public:
    A(int) {}
  };
}

template<typename T>
class A;

class B : public ns::A<string>
{
public:
  B() : A<string>(1) {}
};