При просмотре изменений GCC 4.9.0 здесь, я был приятно удивлен, прочитав следующее: в разделе "Новые улучшения для языков и языков" для С++:
g++ поддерживает неограниченные общие функции, указанные в п. 4.1.1.2 и §5.1.1 N3889: Основные понятия Lite Specification. Вкратце, авто может использоваться как спецификатор типа в объявлении параметра любого функции декларатора, чтобы ввести неявную функцию шаблонный параметр, аналогичный общему числу лямбда.
// the following two function declarations are equivalent
auto incr(auto x) { return x++; }
template <typename T>
auto incr(T x) { return x++; }
Я построил GCC 4.9.0, и мои первоначальные тесты работали, как ожидалось. Я считаю, что Concepts Lite останутся как-то вспомогательными к предстоящей спецификации С++ 14. Есть ли какой-либо план "неограниченных общих функций", чтобы стать частью С++?