Учитывая эти две функции:
template <typename T> void Print1( const T& aValue, const T& aDefaultValue )
{
if( aValue != aDefaultValue ) std::cout << aValue << std::endl;
}
template <typename T> void Print2( const T& aValue, const decltype(aValue)& aDefaultValue )
{
Print1<T>( aValue, aDefaultValue );
}
Я вижу, что почти в g cc 9 тип удержания работает всегда на Print2
, но не на Print1
unsigned int i = 0;
Print1( i, 0 ); // dont work (cant do type deduction)
Print2( i, 0 ); // work
Это decltype
методика с ++ соответствия и почему?