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