C++/templates/GCC 4.0错误?

1 c++ gcc templates

提供以下代码:

template<class _ResClass, class _ResLoader=DefaultLoader>
class Resource 
: public BaseResource
{
private:
    _ResClass data_;

public:
    explicit Resource(const std::string& path)
    : data_( _ResLoader::load< _ResClass >( path ))
    { };
};
Run Code Online (Sandbox Code Playgroud)

它为什么会失败,但这个会起作用?:

template<class _ResClass, class _ResLoader=DefaultLoader>
class Resource 
: public BaseResource
{
private:
    _ResClass data_;

public:
    explicit Resource(const std::string& path)
    : data_( **DefaultLoader**::load< _ResClass >( path ))
    { };
};
Run Code Online (Sandbox Code Playgroud)

APr*_*mer 7

load是一个依赖名称,所以

data_( _ResLoader::template load< _ResClass >( path ))
Run Code Online (Sandbox Code Playgroud)

出于与typename依赖名称是类型时所需的相同原因.