всем привет.
есть две перегрузки.
гарантируется, что одна будет не шаблонной,
а другая - шаблонной.
их типы - unspecified
то бишь они могут постоянно изменяться.
могут добавляться новые пары функций с другими именами,
типы которых так же unspecified
не хочется в ручную каждый раз отслеживать возможные изменения.
хочется автоматический вывод типов.
рассмотрим код:
http://rextester.com/JMVC42751
есть две перегрузки.
гарантируется, что одна будет не шаблонной,
а другая - шаблонной.
их типы - unspecified
то бишь они могут постоянно изменяться.
могут добавляться новые пары функций с другими именами,
типы которых так же unspecified
не хочется в ручную каждый раз отслеживать возможные изменения.
хочется автоматический вывод типов.
рассмотрим код:
http://rextester.com/JMVC42751
:
// заранее не известно
// каким может быть возвращаемое значение
int foo(){ return 0; }
// заранее не известно
// каким может быть возвращаемое значение
template<class t> t foo(){ return t{}; }
int main()
{
foo(); // ок.
foo<int>(); // ok
// error: decltype cannot resolve address of overloaded function
using fn = decltype(&foo);
// конкретно, мне нужно автоматически определять тип нешаблонной версии функции
// если бы я хотел шаблонную, то так бы и писал: &foo<type>
//WTF ???
}