是的,变量模板在头文件中声明会违反ODR。因为在多个源文件中包含相同的头文件时会导致多个重复的变量模板定义。这样就会产生多个定义的冲突,导致编译错误。
解决方法是将变量模板声明放在头文件中,而将其定义放在源文件中。这样就可以解决ODR问题。以下是一个例子:
// header.h
template
// source.cpp
#include "header.h"
template
// main.cpp
#include "header.h"
int main()
{
var
上一篇:变量模板特化不支持递归定义。
下一篇:变量模块实例化