Valentin Mihov's Blog

Random pieces of wisdom about technology

Интересна забележка отностно темплейтите в C++

Тъй като в момента портвам едни сорсове за GCC се натъкнах на много интересна несъвместимост между VC++ и GCC. В последствие се оказа, че това е пренебрегване на VC++ на стандарта (сефте!). Ето за какво става дума:

    template class D : public B {
    public:
      void g()
      {
        // bad (even though some compilers erroneously (temporarily?) accept it)
        B::Xyz x;
        // bad (even though some compilers erroneously (temporarily?) accept it)
        B::Pqr y;
      }
    };

трябва да се напише по следният начин:

    template class D : public B {
    public:
      void g()
      {
        typename B::Xyz x;  // good
        typename B::Pqr y;  // good
      }
    };

Ето и линкче от където са взети примерите (не поствам моя код заради NDA): инфо

Между другото горният сайт е може би един най-ценните ресурси за C++ и то най-вече за по-сериозните неща в езика.