我已经创建了一个模板类,该模板类会在发生实例化时触发运行时文本输出:
template<typename T>
struct verbose {
verbose()
{
std::cout << "Instantation occured!" << std::endl;
}
};
template<typename T>
struct base
{
inline static verbose<T> v;
};
当我强制创建实例时,它显示输出:
template struct base<int>;
//output: Instantation occured!
另一方面,当我将其与CRTP模式一起使用时,似乎没有实例化:
class test : public base<test>
{
};
这种行为是否符合ISO标准?我可以以某种方式强制进行实例化,而无需模板类(base
)的用户编写其他代码吗?对我来说,重要的是静态变量构造函数的副作用。