テンプレートの記述で分からないことがあります。検索テンプレートの記述で分からないことがあります。1こんたテンプレートの記述で分からないことがあります。2013でlistクラスのソースを見たいたのですがlistクラスの実装で、以下ののようなコンストラクタのコードがありました。~"という書き方を初めて見たのですがこれはどういった動作をするものなのでしょうか。詳しく分かる方いましたら教えていただきたいです。テンプレートの記述で分からないことがあります。5年前typenameは後続の識別子が型名である事を指定します。テンプレート型Tがあるとき、T::typeと書くと、typeが型名なのかはコンパイラはその時点では判断できません。型名であることを明示するためにtypenameを書きます。なっているのは、単にテンプレート引数名を省略しています。〜のTを省いた形です。このテンプレート引数は実際に指定して使用する目的ではなく、SFINAEによってコンストラクタ呼び出しを解決するためのダミーのテンプレート引数です。_is_iteratorは、MSVC内部実装なので憶測になりますが、おそらく引数の型がイテレータの要件を満たす場合、メンバ定数valueがtrueになる型と思われます。そのbool定数をenable_ifに渡すことでSFINAEを操作しています。イテレータの要件を満たさない場合はenable_ifにfalseが渡されます。enable_ifはfalseを渡された場合、メンバ型typeを定義しません。定義されていない型を実体化はできないので、本来はエラーになります。ここでSFINAEが発動し、エラーではなくオーバーロード解決の候補からこのコンストラクタを排除するだけでエラーにはなりません。結果として、このコンストラクタを呼び出せるのは引数の型がイテレータの要件を満たす場合のみになります。テンプレートの記述で分からないことがあります。詳しい解説ありがとうございます。おかげさまでこの書き方について理解することができました。テンプレートにこのような引数の型を限定できるテクニックがあるのを初めて知りました。テンプレートの記述で分からないことがあります。一応言っておきますが、かなり上級者の、こういうライブラリ実装者向けのテクニックです。真似をするなど、迂闊に手を出したりはしない事をお勧めします。typenameを知らない段階で扱えるものではありませんので。ミクプラは自由にリンクできます。