読者です 読者をやめる 読者になる 読者になる

VisualStudio2013のバグ?alias templateにT::valueやT::typeやvariadic-templateを使うとC2955エラーなど不都合が起こる

VS2013

VisuakStudio2013のバグ?エイリアステンプレートにエイリアステンプレートを使うとC2955エラーを吐く - TXT.TXT

の問題をちゃんと分析しなおした
テストコードはーい

template<size_t N>
struct Index{ static const size_t value = N; };

template<class T>
using foo = typename T::type;

template<class T>
using bar = Index<T::value>;

template<class T>
struct test
{
	//using f = foo<foo<T>>;	//error
	//using b = bar<T>;		//error
};

上のコメントアウトしている部分がC2955エラーになる
が、真の問題はfoo barの部分であると考える
alias templateを使う際はこれ値注意したい

またvariadic-templatesをつかうと不具合が出ることもあるようだ。ソースは私
上記さえ気を付ければalias template固有の問題は今のところ思いつかない(まぁtemplate全体の不都合はあるんだけどね)