不适用场景:函数内部要调用C风格字符串为参数的子函数
std::string_view 并不是完美的,大部分时候,我们都可以使用std::string_view 替代const std::string&,我们可以把std::string_view理解成,一种同时拥有C语言的const char*的指针拷贝成本和 C 语言中std::string类大部分api的类型。但与std::string相比,std::string_view不提供c_str()函数,因为std::string_view具有以下缺点:
四、if constexpr:按条件编译用法:if constexpr语句是编译期的if判断语句,if constexpr要求后面的判断条件是一个编译期可以确定的常量。
用途:用于编写需要进行编译期判断的函数,简化模版函数的书写。
适用场景1:简化模版偏特化的写法编写模版函数时,有时需要对某些类型进行特殊处理,此时就需要写模板偏特化函数。比如下列代码展示的Convert函数的例子:
在C 17里面,可以直接简化成一个函数:
适用场景2:编写变参模版函数在C 17之前,如果要编写一个变参模板函数,那么必须额外写一个函数处理入参数量最少时候的特例,下面以Sum函数为例:
在C 17中,可以这样编写: