【发布时间】:2012-08-22 20:33:51
【问题描述】:
一些常见的模板特化如下:
template<class T>
class C
{
void common() { ... }
void f2 = delete;
};
template<>
class C<int>
{
void common() { ... }
void f1() { ... }
};
可以用static_if 表示为:
template<class T>
class C
{
void common() { ... }
static_if(std::is_same<T, int>::value)
{
void f1( ) { ... }
}
else
{
void f2( ) = delete;
}
}
这些是直接竞争的功能吗?模板专业化可以做一些static_if 做不到的事情吗?似乎static_if 可以做模板专业化可以做的所有事情,甚至更多。
顺便说一句:在这种情况下,我不太喜欢static_if,因为它可能使您在任何给定情况下都可以使用界面的哪些部分并不明显。也许模板特化在某些情况下仍然提供更清晰的语法。
【问题讨论】:
标签: c++ templates template-specialization c++14 static-if