gpt4 book ai didi

c++ - 模板类中的 is_foo 结构

转载 作者:行者123 更新时间:2023-11-28 02:24:15 25 4
gpt4 key购买 nike

我有一个 foosize_t 上模板化的结构.我想写一个is_foo结构使得 is_foo<T>::value当且仅当 T 为真看起来像 foo<N>对于一些 N .这是我的问题的一个最小示例:

template<typename T>
class Bar {
public:
template<size_t N> struct foo{};
template<typename> struct is_foo : std::false_type{};
template<size_t N> struct is_foo<foo<N>> : std::true_type{};
template<typename = std::enable_if<is_foo<foo<0>>::value>::type>
Bar(int x) {}
};

我的问题是 Bar<double> b(5);main编译失败,这意味着 is_foo<foo<0>>::value结果是false .但是,如果我删除 template<typename T>来自 class Bar 的声明, 然后 Bar b(5)会编译好的。我怎样才能制作is_foo按照我希望的方式行事?

最佳答案

My problem is that Bar<double> b(5); in main fails to compile, meaning that is_foo<foo<0>>::value turned out to be false

不是真的。

+ g++ -std=c++14 -O2 -Wall -pedantic -pthread main.cpp
main.cpp:10:25: error: need 'typename' before 'std::enable_if<Bar<T>::is_foo<Bar<T>::foo<0ul> >::value>::type' because 'std::enable_if<Bar<T>::is_foo<Bar<T>::foo<0ul> >::value>' is a dependent scope
template<typename = std::enable_if<is_foo<foo<0>>::value>::type>
^
[snip]
+ clang++ -std=c++14 -O2 -Wall -pedantic -pthread main.cpp
main.cpp:10:25: error: missing 'typename' prior to dependent type name 'std::enable_if<is_foo<foo<0> >::value>::type'
template<typename = std::enable_if<is_foo<foo<0>>::value>::type>
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
typename

关于c++ - 模板类中的 is_foo 结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31276197/

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