模板参数中的 "typename =" 是什么意思?
What does "typename =" mean in the template parameters?
我在书的第189页看到过这个表达式"Effective Modern C++":
template<typename T,
typename = typename std::enable_if<condition>::type>
explicit Person(T&& n);
我只是想知道“typename =
”部分是什么意思。它看起来确实像是模板参数的默认参数。但是你不需要在默认参数中使用类似“typename some_name = ...
”的东西吗?第二个模板参数没有名称,我没有看到在这种情况下使用了第二个模板参数。
P.S。当我在 google(或任何其他搜索引擎)上搜索答案时,等号总是被丢弃,这只会让找到答案变得几乎不可能...
这是一个可选的模板参数,没有名称和默认值。
它用于应用 enable_if
条件;如果不满足条件,它将产生编译器错误。
您可以对普通方法参数使用完全相同的语法。
我在书的第189页看到过这个表达式"Effective Modern C++":
template<typename T,
typename = typename std::enable_if<condition>::type>
explicit Person(T&& n);
我只是想知道“typename =
”部分是什么意思。它看起来确实像是模板参数的默认参数。但是你不需要在默认参数中使用类似“typename some_name = ...
”的东西吗?第二个模板参数没有名称,我没有看到在这种情况下使用了第二个模板参数。
P.S。当我在 google(或任何其他搜索引擎)上搜索答案时,等号总是被丢弃,这只会让找到答案变得几乎不可能...
这是一个可选的模板参数,没有名称和默认值。
它用于应用 enable_if
条件;如果不满足条件,它将产生编译器错误。
您可以对普通方法参数使用完全相同的语法。