gpt4 book ai didi

c++ - 使用 GCC 编译模板友元错误,但不使用 clang

转载 作者:可可西里 更新时间:2023-11-01 17:50:09 27 4
gpt4 key购买 nike

此代码使用 clang 3.7.1 编译(没有诊断),但使用 GCC 5.3.0 编译失败> ( live example ):

#include <iostream>

template<typename T>
struct A {
void foo()
{
static_cast<T*>(this)->implementation();
}
};

struct Crtp : A<Crtp> {
template<typename T>
friend struct A;
private:
void implementation() { std::cout << "implementation()\n"; }
};

int main()
{
Crtp c;
c.foo();
}

GCC 的错误信息如下:

main.cpp:13:16: error: specialization of 'A' after instantiation friend struct A;

哪个是正确的,为什么?是 GCC/clang 的错误吗?

最佳答案

似乎是一个旧的 g++ 错误 ( https://gcc.gnu.org/bugzilla/show_bug.cgi?id=52625 )。

如果我理解正确,已报告但从未更正,

关于c++ - 使用 GCC 编译模板友元错误,但不使用 clang,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36470393/

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