The difference is that inline functions are not subject to the one-definition rule. Try to define the function again in a different translation unit. Without inline, you will get a linker error, with inline the linker will pick one of the definitions and succeed.