可以把constexpr if理解为编译时if,只有被选中的constexpr if分支才会被实例化。
template<typename T> void update(T& target){ //... if constexpr(is_pod<T>::value) simple_and_fast(target);//用于“普通旧数据” else slow_and_safe(target); //... }
这里is_pod<T>是一个类型萃取函数,告诉我们一个类型是否可以简单拷贝。
constexpr if不是一种文本处理机制,因此不能用来打破常规的语法、类型和作用域规则。