Added using alias ic to std::integral_constant
Moved all implementation functions to 'detail' namespace