我在使this类跨界工作时遇到问题。这是一个类模板,它公开了静态内联变量模板。
为了缩小问题的范围并摆脱图书馆的特定内容,请考虑以下示例:
template<typename...>
class family {
inline static int identifier{};
template<typename...>
inline static const int inner = identifier++;
public:
template<typename... Type>
inline static const int type = inner<std::decay_t<Type>...>;
};
struct foo {
using bar = family<foo>;
template<typename T>
void quux() {
const auto id = bar::type<T>;
// do something with id
}
};
这在许多情况下都很好(长话短说,只要默认可见性不为[[hidden,因此从字面上看,对于大多数用户而言,它仅在Windows上会中断)。
您可以猜测,该类的目标是为类型生成顺序数字标识符。现在,我有一个主要的可执行文件和两个(或更多)DLL。为了使它起作用,我需要直观地将它们全部引用相同的变量。但是,在Windows上以及将默认可见性设置为使用GCC / CLang隐藏时不是这种情况。我正在努力寻找
right
使其正常工作的方法,我们说按预期。到目前为止,我所有的尝试都失败了。我尝试导出该类并显式实例化它以及我感兴趣的类型的变量模板。但是,它没有用。我很确定我这里缺少明显的东西,但是我看不到。任何帮助将不胜感激。我在使此类跨界工作时遇到问题。这是一个公开静态内联变量模板的类模板。为了缩小问题的范围并摆脱图书馆的...