as uses auto and decltype for return type
Merge remote-tracking branch 'root/master'
libstdc++ is literally the dumbest thing in the world and does not properly remove const from types with references
Must remove_reference<T> before remove_cv<T>
Stylistic changes to code