gpt4 book ai didi

c++ - 模板类中没有名为 X 的类模板

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:28:59 26 4
gpt4 key购买 nike

当尝试使用 GCC 4.6.0 编译此(类 CRTP)代码时:

template<template<class> class T> struct A;

template<class T>
struct B: A<B<T>::template X> {
template <class U> struct X { U mem; };
};

B<int> a;

我收到错误消息“test.cpp:3:26:错误:‘struct B ’中没有名为‘X’的类模板”。为什么 X 在类定义之外似乎是不可见的?

最佳答案

正如 Emile Cormier 正确指出的那样 here问题是在 A 实例化的地方,B 仍然是一个不完整的类型,你不能使用内部模板。

解决方案是将模板 X 移到模板 B 之外。如果它独立于模板 B 的特定实例化 T,只需将其移动到命名空间级别,如果它依赖于实例化,则可以使用类型特征:

template <typename T>
struct inner_template
{
template <typename U> class tmpl { U mem; }; // can specialize for particular T's
};
template <typename T>
struct B : A< inner_template<T>::template tmpl >
{
};

关于c++ - 模板类中没有名为 X 的类模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5794347/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com