C++14 の Generic lambda を利用してローカルクラステンプレートぽい事をする

そういえば、Generic Lambda を利用すればローカルクラステンプレートみたいなことができるかなー、と思って書いてみた。

[ソース]

#include <utility>

int
main(){
    auto identity_ = [](auto t){
        typedef decltype(t) T;
        struct impl{
            typedef T type;
        };
        return impl{};
    };

    static_assert(std::is_same<decltype(identity_(std::declval<int>()))::type, int>{}, "");
    static_assert(std::is_same<decltype(identity_(std::declval<float>()))::type, float>{}, "");

    auto add_pointer_ = [](auto t){
        typedef decltype(t) T;
        struct impl{
            typedef T* type;
        };
        return impl{};
    };
    
    static_assert(std::is_same<decltype(add_pointer_(std::declval<int>()))::type, int*>{}, "");
    static_assert(std::is_same<decltype(add_pointer_(std::declval<float>()))::type, float*>{}, "");

    return 0;
}

http://melpon.org/wandbox/permlink/OLRaojX4dOaJjeKk


評価する場合は decltype が必要ではあるけど一応それっぽい事はできている感じですね。
何かに利用できるだろうか。