Listing 2 Illustrates problem with nesting classes in templates

template <class X >
struct outside
   {
   struct inside
      {
      X i;
      X double_value() { return 2.0*i; } //inline COMPILES OK
      X value();
      } *list;
   };

//COMPILER REGARDS THIS EXTERNAL FUNCTION BODY
//DEFINITION AS SYNTAX ERROR:
template <class X>
X outside<X>::inside::value()
   {
   return i;
   }

// End of File