gpt4 book ai didi

C++ 模板特化和 xcode

转载 作者:行者123 更新时间:2023-11-30 03:45:46 25 4
gpt4 key购买 nike

Xcode 出现以下错误:

Template argument for template template parameter must be a class template or type alias template

然而,同样的代码在 Visual Studio 中运行良好。

template< typename T_NODE, template< typename > class T_ALLOCATOR >
class qt_fixed_pool_general {};

template< template< typename, int > class T_ALLOCATOR, int T_COUNT >
struct static_to_dynamic
{ template< typename T_NODE > using t_allocator = T_ALLOCATOR< T_NODE,T_COUNT >; };

template< typename T_NODE, int T_COUNT >
struct safe_array {};

template< class T_NODE, int T_COUNT >
class qt_fixed_pool_static : public qt_fixed_pool_general<
T_NODE,
static_to_dynamic< safe_array, T_COUNT >::t_allocator >
{};

任何想法可能会发生什么?我正在使用 Xcode 7.2

最佳答案

问题是当解析(而不是实例化)模板时,编译器无法知道 t_allocator 将是一个模板而不是静态数据成员。你必须告诉它:

template< class T_NODE, int T_COUNT >
class qt_fixed_pool_static : public qt_fixed_pool_general<
T_NODE,
static_to_dynamic< safe_array, T_COUNT >::template t_allocator >
{}; //^^^^^^^^

[Live example]

注意 ::t_allocator 之间添加的 template 关键字。

这在 Visual Studio 中起作用的原因是 VS 在其模板解析中不符合标准(而且从来没有):它没有正确地进行两阶段查找,而是将所有名称解析推迟到实例化时间,所以它不会因为这样的错误而跳闸。

关于C++ 模板特化和 xcode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34544989/

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