你能用语句专门化吗?
Can you specialise using statements?
如果我想让某种类型在其模板参数上特殊化,我通常使用struct:
template <bool value>
struct IsTrue;
template <>
struct IsTrue<true> : std::true_type {};
template <>
struct IsTrue<false> : std::false_type {};
从继承中获得其唯一功能的空结构体与using
语句并没有真正的不同,所以我想知道,using
语句存在模板专门化之类的东西吗?下面的伪代码:
template <bool value>
using IsTrue;
template <>
using IsTrue<true> = std::true_type;
template <>
using IsTrue<false> = std::false_type;
这样的事情可能吗?会叫什么名字呢?
不可以,别名模板不能部分或显式特化。
早期的设计确实允许专门化,但是结果的语义相当…奇怪,至少从今天的角度来看。例如,在这样的设计中,下面的程序将声明两个不同的函数模板:
template<class, class> class Meow {};
template<class T> using MeowInt = Meow<int, T>;
template<class> void f(Meow<int, T>);
template<class> void f(MeowInt<T>);
和此调用将无法编译,因为您将无法推断模板实参:
template<class T> using Purr = T;
template<class T> void f(Purr<T>);
f(42);
相关文章:
- 我的简单if-else语句是如何无法访问的代码
- 有一个打印语句的函数是一种糟糕的编程实践吗
- 线程,如果else语句,都是错误的上下文切换后,会发生什么
- 为什么是0;C++中的有效语句
- Insert函数不适用于2 if语句C++
- 是否可以对零模板参数进行模板专门化
- If语句未被求值C++
- C++嵌套if语句,基本货币交换
- 多个If语句与使用逻辑运算符计算条件的单个语句的比较
- 是否可以使用if constexpr删除控制流语句
- 无法理解此 return 语句的功能,没有它就会发生运行时错误
- 我似乎对if/else的基本语句有问题:/
- 当调用switch语句中的函数时(即使函数不包含循环),似乎是永不结束的循环的问题
- If语句在c++中被忽略
- 比较if语句中的数组值和int值
- 以在Qt中的IF语句中设置时间延迟
- Craps游戏问题,忽略if语句
- "类模板示例<int>;"语句对 C++11 是什么意思?
- 如何编写一个使用n倍三元条件语句的C++布尔函数
- 你能用语句专门化吗?