Рассмотрим
#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&
.
Что мне не хватает?