return type에 auto 를 쓰지 못하는게 찝찝해서 조금 손 봄.
함수의 디폴트 파라메터를 씀요~
#define stab( ... ) bool(*)[ __VA_ARGS__ ] = nullptr
template< class T >
auto func( T v, stab( sizeof v == 8 ) )
{
...
}
template< class T >
auto func( T v, stab( sizeof v == 4 ) )
{
...
}
template< class T >
auto func( T v, stab( sizeof v == 2 ) )
{
...
}
아니 이건 뭐죠
함수 파라메터에 = 붙여서 값 주면 디폴트 파라메터잖아.
거기다 함수포인터 배열을 선언하는데 배열의 크기를 0을 만들어서 SFINAE 를 구현하는 거지.
대신 저 배열 수식이 좀 길고 지저분해서 조건만 분리하고 매크로로 집어 넣었는데,
가변인자를 지원하게 해 뒀기 땜에 복잡한 수식도 가능해.
콤마도 쓸수 있고 말야 : )
return 값에 auto 를 쓸 수 있으니 void 니 bool 이니 int 니 신경 안쓰고 걍 auto 로 작성할 수 있는게 장점 : )
이건 걍 언어를 창조하는 수준인데
C += 4 언어