ここでGCC 4.9.0 リリースの変更を見ているときに、次の内容を読んでうれしい驚きを覚えました。C++ の「新しい言語と言語固有の改善」セクションの下:
G++ は、N3889: Concepts Lite Specificationの §4.1.2 および §5.1.1 で指定されている制約のないジェネリック関数をサポートしています。簡単に言えば、 auto は、一般的なラムダと同様に、暗黙的な関数テンプレート パラメーターを導入するために、任意の関数宣言子のパラメーター宣言で型指定子として使用できます。
// 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 は今後の C++14 仕様の補助的なものであり続けると思います。「制約のないジェネリック関数」が C++ の一部になる計画はありますか?