C ++ 11에서 s using
와 같은 유형 별칭을 쓰는 데 사용할 수 있음을 알고 있습니다 typedef
.
typedef int MyInt;
내가 이해 한 것에서 다음과 같습니다.
using MyInt = int;
그리고 새로운 구문은 " template typedef
" 을 표현하는 방법을 찾기위한 노력에서 나왔습니다 .
template< class T > using MyType = AnotherType< T, MyAllocatorType >;
그러나 처음 두 개의 비 템플릿 예제에서 표준에 다른 미묘한 차이점이 있습니까? 예를 들어, typedef
"약한"방식으로 앨리어싱을 수행합니다. 즉, 새 유형을 작성하지 않고 새 이름 만 작성합니다 (해당 이름 사이에 변환이 내재되어 있음).
동일 using
하거나 새로운 유형을 생성합니까? 차이점이 있습니까?
typedef void MyFunc(int,int);
(실제로 나쁘게 보이지 않음), 또는using MyFunc = void(&)(int,int);
using MyFunc = void(&)(int,int);
? MyFunc
함수에 대한 참조 라는 의미 입니까? & 를 생략하면 어떻게됩니까?
typedef void (&MyFunc)(int,int);
. 당신은 생략 한 경우 &
는 동등의typedef void MyFunc(int,int);
typedef void (&MyFunc)(int,int);
또는 을 선호using MyFunc = void(int,int);
합니까?