gpt4 book ai didi

C++ 部分模板 模板特化

转载 作者:行者123 更新时间:2023-12-02 09:25:43 25 4
gpt4 key购买 nike

我想将部分模板特化传递给模板模板参数,但出现错误。我不确定为什么这不起作用。

template<template<typename, int> class V, typename T, int N, int... Indexes>
class Swizzle
{
// ...
};

template<typename T, int N>
struct Vector;

template<typename T>
struct Vector<T, 3>
{
// ...

union
{
// ...
Swizzle<Vector, T, 3, 0, 0, 0> xxx;
};
};

错误:

'Vector': invalid template argument for template parameter 'V', expected a class template 'Swizzle': use of class template requires template argument list

问题仅出现在 MSVC

最佳答案

在类模板Vector中,Vector既指模板实例的类型,也指模板本身。

This should compile :

template<class X, int M>
using Self = Vector<X,M>;
// ...

union
{
// ...
Swizzle<Self, T, 3, 0, 0, 0> xxx;
};

我怀疑 MSVC 在这里是错误的,但我不确定。

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

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