相关疑难解决方法(0)

你为什么有时需要写'typename T`而不只是`T`?

我正在阅读有关SFINAE的维基百科文章,并遇到以下代码示例:

struct Test 
{
    typedef int Type;
};

template < typename T > 
void f( typename T::Type ) {} // definition #1

template < typename T > 
void f( T ) {}                // definition #2

void foo()
{
    f< Test > ( 10 ); //call #1 

    f< int > ( 10 );  //call #2 without error thanks to SFINAE
}
Run Code Online (Sandbox Code Playgroud)

现在我实际上已经编写了这样的代码,并且在某种程度上直觉上我知道我需要输入"typename T"而不是"T".但是,了解它背后的实际逻辑会很高兴.有人在乎解释吗?

c++ sfinae

10
推荐指数
2
解决办法
1786
查看次数

标签 统计

c++ ×1

sfinae ×1