http://clang.llvm.org/docs/LanguageExtensions.html#related-result-types

http://nshipster.cn/instancetype/