C ++ 11ではusing
、typedef
sのような型エイリアスを書き込むために使用できることを知っています。
typedef int MyInt;
私が理解していることから、これは次と同等です:
using MyInt = int;
そして、その新しい構文は、 " template typedef
" を表現する方法を持つための努力から生まれました。
template< class T > using MyType = AnotherType< T, MyAllocatorType >;
しかし、最初の2つの非テンプレートの例では、標準に他の微妙な違いがありますか?たとえば、typedef
sは「弱い」方法でエイリアシングを行います。つまり、新しいタイプは作成されず、新しい名前のみが作成されます(これらの名前間の変換は暗黙的です)。
それと同じ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);
?