当所有模板参数均为同一类型时的部分模板特化

问题描述 投票:0回答:1

C++14(所以没有约束,

require
或折叠表达式,但有SFINAE)中是否可以有类模板的部分模板专业化

template <typename ...T>
class Generic {
    using Container = std::tuple<T...>;
};

对于每个模板参数都是同一类型的情况? 我需要这个,因为通用版本将使用

std::tuple
容器,而专业化将使用
std::array

c++14 sfinae template-specialization enable-if parameter-pack
1个回答
0
投票
#include <tuple>
#include <vector>

template <typename ...T>
class Generic {
public:
    using Container = std::tuple<T...>;
};

template <typename T>
class Generic<T> {
public:
    using Container = std::vector<T>;
};

int main() { 
    Generic<int>::Container x;
    Generic<int,long>::Container y;
}

Godbolt 直播

© www.soinside.com 2019 - 2024. All rights reserved.