template< typename T>
NamedObject< typename T> ::NamedObject(const char *name, const T& The definition format of value can be compiled smoothly in VS,
but error: template argument 1 is invalid in GCC and should be defined as removing the second typename
template< typename T>
NamedObject< T> ::NamedObject(const char *name, const T& value)