конца понял одну штуку.
                  
                  
                  template< typename T>
                  
                  
                  void foo(T a)
                  
                  
                  {
                  
                  
                      std::cout << "Test1" << std::endl;
                  
                  
                  }
                  
                  
                  
                  
                  
                  template< typename T1, typename... T2>
                  
                  
                  void foo(T1 a, T2... b)
                  
                  
                  {
                  
                  
                      std::cout << "Test2" << std::endl;
                  
                  
                  }
                  
                  
                  
                  
                  
                  ...
                  
                  
                  foo(1);
                  
                  
                  
                  
                  
                  По идеи тут компилятор должен сообщить об неопределенности, так как подходят оба шаблона. Давно он так и делал (что приводило к проблемам), то теперь он в данной ситуации будет предпочитать шаблон без пакета параметров и будет вызван первый шаблон. Но вот почему тогда к ошибке приводит следующий код:
                  
                  
                  template< typename T>
                  
                  
                  void foo()
                  
                  
                  {
                  
                  
                      std::cout << "Test1" << std::endl;
                  
                  
                  }
                  
                  
                  
                  
                  
                  template< typename T1, typename... T2>
                  
                  
                  void foo()
                  
                  
                  {
                  
                  
                      std::cout << "Test2" << std::endl;
                  
                  
                  }
                  
                  
                  
                  
                  
                  ...
                  
                  
                  foo<int>();
                  
                  
                  
                  
                  
                  Не должен ли компилятор так же предпочесть первый шаблон?  Или я немного не так все понял)
                  
                  
                
эм...
я исправил))
Обсуждают сегодня