次のコードを考慮して:テンプレートエイリアス宣言が新しいタイプのファミリに解決される場合
Xのようにテンプレートエイリアスを使用するとどうなりますか? ZはYのエイリアスなので、専門化Xはまだ使用されていますか? テンプレートエイリアスを使用すると、テンプレートエイリアスの宣言が新しいタイプのファミリに解決されるとどうなりますか?
#include <iostream>
template <template <typename> class>
struct X {
X() { std::cout << "1"; }
};
template <typename>
struct Y {};
template <typename T>
using Z = Y<T>;
template <>
struct X<Y> {
X() { std::cout << "2"; }
};
int main() {
X<Y> x1;
X<Z> x2;
}
output :21
Z'は単に 'Y'の別名である'として私は、 '22'を印刷することを期待します。 g ++は '22'を出力しますが、' 21'を出力します... –
はい、なぜあなたは別のものになるのですか? – Adib
私は言葉が前にはっきりしていないと思っていますが、同じ順序のテンプレート引数)。 – Jarod42