as far as i know it's only possible to have function definitions in the header(outside of class def.) with the c++ inline keyword (one definition rule) maybe it doesn't work with the compiler specific inline commands, because they are no c++ keywords?
#ifdef __GNUG__
// g++, clang++: [[ gnu::always_inline ]] does not also imply C++ inline
// [[ gnu::always_inline ]] is an additional implementation-defined
// attribute using the C++11 unified standard attribute syntax. note: gnu::
#define FORCEINLINE [[ gnu::always_inline ]] inline
#elif defined _MSC_VER
// msc++: ____forceinline implies C++ inline
// msc++ does not provide any additional implementation-defined
// attributes using the C++11 unified standard attribute syntax
#define FORCEINLINE __forceinline // inline is implied
#else
#define FORCEINLINE inline
#endif
struct A
{
int value() const ;
void value( int new_value ) ;
int v = 9 ;
};
FORCEINLINE int A::value() const { return v ; }
FORCEINLINE void A::value( int new_value ) { v = new_value ; }