提供以下代码:
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)
load是一个依赖名称,所以
data_( _ResLoader::template load< _ResClass >( path ))
Run Code Online (Sandbox Code Playgroud)
出于与typename依赖名称是类型时所需的相同原因.