<< "abc";
}
template<typename T>
void foo(std::type_identity_t<T> x) {
std::cout << "fdsf";
}
int main() {
foo<int>(5);
}
Что это ? Почему у функций разный манглинг? почему выбирается второе? Почему если заменить 5 на char '5' всё ещё выбирается второе? Это что то уровня бага стандарта на уровне с манглингом одинаковым для requires
а почему тут манглинг должен быть одинаковый?
пахнет IFNDR http://eel.is/c++draft/temp.over.link#7
Ну разный манглинг понятно почему. Потому что алиас на тип внутри другого типа манглится как алиас, а не как низлежащий тип. Другими словами - std::type_indentity_t<T> манглится как std::type_indentity<T>::type, что в случае с интом дает std::type_indentity<int>::type
Это не объясняет ничего, это констатация факта
Обсуждают сегодня