【发布时间】:2016-03-24 20:43:11
【问题描述】:
我认为这是不可能的,但一定有人知道得更好......
template<typename T>
T Read() //T is int, char, etc
{
return read<T>();
}
template<typename T, Size>
std::array<T,Size> Read<std::array<T, Size>>()
{
return unique_read<T, Size>();
}
我猜只要我指定任何模板参数,它就不再是完全特化,函数中也不允许部分特化
我唯一能想到的是:
template<typename T>
struct _dummy
{
T Read() {
return T();
};
};
template<typename T, size_t Size>
struct _dummy<std::array<T, Size>>
{
using ArrayType = std::array<T, Size>;
ArrayType Read() {
return ArrayType();
};
};
【问题讨论】:
-
你想做什么?现在你只是在展示复杂的写作方式
T{}。 -
@Barry 我想以一种方式处理所有 T,除了 std:.arrays。这就是我想要做的。
-
你可能想让你的
Read在_dummy中是静态的,但除此之外,这是偏函数特化的一个技巧。 -
@SergeyA read 函数在一个类中,所以我想我必须修改 read 以在每次调用时获取指向外部类的指针并将其设为静态,或者创建一个 _dummy 对象在我的班级中,并且只将指针传递给外部班级一次。我想避免这两件事:
标签: c++ templates c++14 template-specialization