gpt4 book ai didi

C++: 错误 "explicit specialization in non-namespace scope"

转载 作者:可可西里 更新时间:2023-11-01 16:33:40 33 4
gpt4 key购买 nike

template<typename T1, typename T2>
class Bimap {
public:
class Data {
private:
template<typename T> Data& set(T);
template<> Data& set<T1>(typename T1 v) { /*...*/ }
};
};

这给了我错误:

error: explicit specialization in non-namespace scope 'class Bimap<T1, T2>::Data'

我明白错误在说什么。但是为什么我不能这样做呢?我该如何解决?

最佳答案

忘记模板、重载的一种方法:

Data& set(T1 v) { /*...*/ }

但这是我有时使用的技巧

你可以在类中特化类模板:

class {
template<typename T>
struct function_ {
static void apply(T);
};

template<>
struct function_<int> {
...
};

template<typename T>
void function(T t) { return function_<T>::apply(t); }

关于C++: 错误 "explicit specialization in non-namespace scope",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3746419/

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