fixed size() returning bool instead of size_t
return reference from top(), provide const reference overload
provide push() overload for value_type&&
marked move constructor noexcept, enforced value_type nothrow move constructor through enable_if
test size() and empty()
added std::is_assignable to test isAssignable
removed pointless test for move assignment (always successful), refined test for move construction by requiring std::is_nothrow_move_constructible