【发布时间】:2020-01-09 05:23:22
【问题描述】:
考虑
#include <iostream>
#include <type_traits>
template <class T, class ARG_T = T&>
T foo(ARG_T v){
return std::is_reference<decltype(v)>::value;
}
int main() {
int a = 1;
std::cout << foo<int>(a) << '\n';
std::cout << foo<int, int&>(a) << '\n';
}
我希望这两种情况下的输出都是 1。但在第一种情况下,它是 0:与默认值为 class ARG_T = T 而不是 class ARG_T = T& 一致。
我错过了什么?
【问题讨论】:
-
好的,为了清楚起见(在有些复杂的答案之后):您的问题与 default 参数 无关,因为它在任何一个示例中都没有使用案例。
标签: c++ templates function-templates template-argument-deduction