我和一个朋友正在讨论 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 中的最后一行有两个合理的解析。'b' 是模板参数还是b > (c)
模板参数?
虽然编译它很简单,看看我们得到了什么,我们想知道是什么解决了歧义?