如果定义了该类型的本地自动变量,是否会实例化模板?
e.g。
template<typename T> class MyClass {
};
int main() {
MyClass<int> var; // Does this cause instantiation?
}
编辑:
我之所以问这个是以下代码:
template<typename T> class get_false { public:
static constexpr bool val = false;
};
template<typename T>
class MyClass_2 {
static_assert(get_false<T>::val, "Failure");
};
template<typename T, typename U = MyClass_2<T>>
class MyClass {};
int main() {
MyClass<bool> obj; // I suppose this isn't instantiated
}
答案 0 :(得分:0)
是的,它是实例化的。
#include <iostream>
template<typename T>
class MyClass {
public:
MyClass() {
std::cout << "instantiated" << std::endl;
}
};
int main() {
MyClass<int> var;
}
程序输出“instantiated”⇒调用MyClass
构造函数⇒var
对象被实例化。