gpt4 book ai didi

c++ - GCC和Clang中模板类如何继承子类

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

我不理解以下代码示例中的 GCC 和 Clang 行为。为什么 GCC/Clang 允许调用非继承类,如 check<'d'>。

#include <iostream>

template<char TCh> struct check { static constexpr char ch = TCh; };
template<char ... TChs> struct checker
: public check<TChs>...
{};

using double_litters = checker<'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '.'>;

int main()
{
std::cout << double_litters::check<'d'>::ch << std::endl; // GCC/Clang compile OK, VS compile ERROR
std::cout << double_litters::check<'1'>::ch << std::endl; // GCC/Clang compile OK, VS compile OK
return 0;
}

最佳答案

不确定为什么会发生这种情况以及这是否真的是一个错误。但你可以这样修复它:

double_litters().check<'d'>::ch

这会在 GCC 中产生错误,没有 clang 来检查...

关于c++ - GCC和Clang中模板类如何继承子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57162963/

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