友人と私は C++ テンプレートについて話し合っていました。彼は私にこれが何をすべきか尋ねました:
#include <iostream>
template <bool>
struct A {
A(bool) { std::cout << "bool\n"; }
A(void*) { std::cout << "void*\n"; }
};
int main() {
A<true> *d = 0;
const int b = 2;
const int c = 1;
new A< b > (c) > (d);
}
main の最後の行には、2 つの妥当な解析があります。'b' はb > (c)
テンプレート引数ですか、それともテンプレート引数ですか?
これをコンパイルして何が得られるかを確認するのは簡単ですが、何が曖昧さを解決するのか疑問に思っていました。