首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么返回类型为void的函数会是constexpr?

返回类型为void的函数不会被用于表达式的求值,因此它们不会被用于编译时常量表达式的求值。constexpr函数要求其返回类型必须是字面类型,并且函数体必须是一个编译时可求值的常量表达式。因此,返回类型为void的函数无法满足constexpr函数的要求。

constexpr函数是在编译时求值的函数,它可以用于编译时常量的计算和初始化。返回类型为void的函数没有返回值,因此无法用于编译时常量的计算和初始化,也就无法作为constexpr函数使用。

总结起来,返回类型为void的函数不会被用于编译时常量表达式的求值,因此不能被声明为constexpr函数。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

C++函数返回结果自定义类型

我看源码时候,经常可以看到在一个函数前面,就是在本身应该在放void,int这种地方,却出现了指针,结构体,类等东西。...这个是自定义返回类型 设计一个函数,然后返回类型设计这个类 接下来再看,完成了这个转换 结构体转换 偷了一张图过来,值得返回类型就是这3种 返回类型时。...使用临时对象(temporary object)来保存函数返回值。函数返回值用于初始化调用点一个临时对象,该临时对象就是函数调用结果。其返回右值。不能作为左值。...当函数返回值是引用类型时,其返回值即为return变量,所以不需要临时对象保存其返回值。所以,对于返回引用类型函数,其返回左值。...返回局部变量(函数内部自己定义变量) 返回值是自定义结构类型:使用临时对象(temporary object)来保存函数返回值。

1.3K30

函数出错返回数据类型

函数出错返回数据类型有4中情况:错误码、NULL值、空对象、异常对象。 1. 错误码 C语言中没有异常这样语法机制,返回错误码便是最常用出错处理方式。...对于查找函数(get、find、select、search、query 等单词开头函数),数据不存在是一种正常行为,并非是一种异常情况,所以返回表示不存在语义NULL值比返回异常更合理。...2.1 弊端 很多人认为返回NULL值是一种不好设计思路两个主要理由: 若函数可能返回NULL值,当使用时忘记做NULL值判断,可能会抛出空指针异常(Null Pointer Exception,NPE...当函数返回数据是字符串类型或者集合类型时候,我们可以用空字符串或空集合替代 NULL 值,来表示不存在情况。这样,我们在使用函数时候,就可以不用做 NULL 值判断。...抛出异常对象 最常用函数出错处理方式是抛出异常。异常有两种类型:受检异常和非受检异常。 至于孰好孰坏,只需要根据团队开发习惯,在同一个项目中,制定统一异常处理规范即可。

2.1K20

父类返回子类类型函数写法

不过由于我们这个 Event 类型比较多,因此希望写一个父类,来一个子类感受下: class DisposableEventBuilder : EventBuilder() { private....build() 我们调用完父类 retryLimit 方法后,想要设置下 delay,结果发现没有这个方法。 “我 X,这什么玩意儿”,你嘟囔了一句。 因为返回是父类,所以链式调用掉链子了。...,那么这样的话我们就可以在返回自身类型位置返回 T 这个类型了。...子类改动就很简单了,只需要给父类加一个泛型参数自己类型即可: class DisposableEventBuilder : EventBuilder...() { ... } 其他什么也不用动,这时候我们链式调用就没啥问题了: DisposableEventBuilder().retryLimit(3) .delay(60_

4.7K10

【Kotlin】函数 ③ ( 匿名函数 | 匿名函数函数类型 | 匿名函数隐式返回 )

文章目录 一、匿名函数 二、匿名函数函数类型 三、匿名函数隐式返回 一、匿名函数 ---- 声明函数时 , 没有 函数函数 是 匿名函数 ; 匿名函数 可以作为 函数参数 , 也可以作为 函数返回值...Boolean) 扩展函数 , 接收一个 (Char) -> Boolean 类型函数 , 用于 返回匹配给定 匿名函数 字符数 ; /** * 返回匹配给定[谓词 predicate 匿名函数...---- 匿名函数 可以作为 变量 赋值给 函数类型变量 , 可以作为 函数参数 传递给函数 , 因此 , 匿名函数 与 变量 一样 , 也存在 对应 函数类型 ; 函数类型 由 参数 和 返回值...决定 ; 有 相同 参数顺序 , 参数个数 和 返回类型 函数 , 其 函数类型相同 ; 如上个章节 , 扩展函数 CharSequence.count 接收匿名函数参数 predicate ,...// 函数类型变量 赋值一个 匿名函数 helloFun = { "Hello World" } // 执行 函数类型 变量对应 函数 val str

3K20

函数指针,指针函数返回指针函数「建议收藏」

大家好,又见面了,我是你们朋友全栈君。 摘要: 在学习C语言时,一个比较容易混淆概念就是函数指针、指针函数返回指针函数。本文将对这三个概念进行区分。...指针函数就是返回指针函数,两个本质上是同一事物,只是叫法不同。函数指针就是一个指向函数指针,本质上是一个指针,只是这个指针指向对象是函数,而不是一般意义上存储对象。...正文: 指针函数 指针函数就是返回指针值函数,本质是一个函数。所以指针函数等价于“返回指针函数”。...对于一个返回指针函数,不能返回auto型局部变量地址,但可返回static型变量地址。...而static类型变量占用内存空间则不会因为函数返回而被释放,不会出现野指针问题。 所以编写指针函数使要注意返回值。总体原则是:返回指针对应内存空间不会因函数返回则被释放掉。

1.6K10

奇怪Java题:为什么128 == 128返回false,而127 == 127会返回true?

奇怪Java题:为什么128 == 128返回false,而127 == 127会返回true? 在回答这个问题之前,我们先来看看int和Integer对比,一步步揭开问题答案。...基本类型(原始数据类型)在传递参数时都是按值传递,而封装类型是按引用传递(其实“引用也是按值传递”,传递是对象地址)。 由于包装类型都是不可变量,因此没有提供改变它值方法。...,其内存地址不同 (2) Integer变量和int变量比较时,只要两个变量值是相等,则结果true。...3.2 Java每个原始类型提供了封装类 为了编程方便还是引入了基本数据类型,但是为了能够将这些基本数据类型当成对象操作,Java每 一个基本数据类型都引入了对应包装类型(wrapper class...,Double 4、 基本解析 4.1 自动装箱:将基本数据类型重新转化为对象 public class Test { public static void main(String[] args

2.2K31

Golang 函数返回类型是接口时返回对象指针还是值

1.接口简介 Interface 是一组抽象方法(未具体实现方法,仅包含方法名参数返回方法)集合,如果实现了 interface 中所有方法,即该类型就实现了该接口。...注意: (1)接口中不能含有属性; (2)每种类型都能实现多个接口; (3)未初始化接口类型变量 nil。...接口声明格式: type InterfaceName interface { //方法列表 } 2.函数返回类型是接口时返回对象指针还是值 函数返回类型是接口时返回对象指针还是值,这个要看具体需要...=createEmployeeObj() o.Set() o.Print() e.Print() } 输出结果: company=alibaba company=alibaba 可见函数返回类型是接口时返回对象指针...company="alibaba" e1.Print() } e.Print() } 输出结果: company=alibaba company=tencent 可见函数返回类型是接口时返回对象

7.9K30

C++函数指针、指针函数返回函数指针函数浅谈

例如A *createA();声明了一个返回指向A类型指针,参数列表函数(这句话读起来可能有一··绕口),实例说明 /** * 作者:lyn * 时间:2018.10.30 * 该程序用来演示指针函数...先给一个例子: /* *本例是SGISTL源码中一个函数,比普通返回函数指针函数要更复杂一点 *因为本例中函数参数也是一个函数指针 */ void (* set_malloc_handler...(void (*f)()))() 我们把例子从里往外看 void (*f)()是一个函数指针,它用于指向一个返回void,无参数列表函数 * set_malloc_handler(void (...*f)())这是一个指针函数返回指针,它有一个参数,参数一个函数指针(返回void,无参数列表函数void (* set_malloc_handler(void (*f)()))()...这是一个指针函数返回函数指针(返回void,无参数列表一个函数),它有一个参数,参数一个函数指针 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/152178

1.5K10

在Java中为什么不同返回类型不算方法重载?

) { // doSomething } } 为什么不同返回类型不算方法重载?...从方法签名组成规则我们可以看出,方法返回类型不是方法签名组成部分,所以当同一个类中出现了多个方法名和参数相同,但返回类型不同方法时,JVM 就没办法通过方法签名来判断到底要调用哪个方法了,如下图所示...: 那为什么返回类型不能做为方法签名一部分呢?...原因其实很简单,试想一下,如果方法返回类型也作为方法签名一部分,那么当程序员写了一个代码去调用“重载”方法时,JVM 就不能分辨要调用哪个方法了,如下代码所示: public class OverloadExample...方法返回类型不能作为方法重载依据,因为它不是方法签名组成部分。

3.3K10

Python 字符串中返回bool类型函数集合

字符串中返回bool类型函数集合 isspace 功能: 判断字符串是否是由一个空格组成字符串 用法: booltype = string.isspace() -> 无参数可传 ,返回一个布尔类型...注意: 由空格组成字符串,不是空字符串 : “’!...=‘’’ istitile 功能: 判断字符串是否是一个标题类型 用法 booltype = String.istitle() -> 无参数可传, 返回一个布尔类型 注意: 该函数只能用于英文 isupper...与islower 功能: isupper判断字符串中字母是否都是大写 islower判断字符串中字母是否都是小写 用法: booltype = string.isupper() -> 无参数可传..., 返回一个布尔类型 booltype = string,islower() ->无参数可传 ,返回一个布尔类型 注意: 只检测字符串里字母,对其他字符不做判断 join与split 稍后见 我们数据类型转换时候见

2.4K20

Modern c++快速浅析

函数返回值标记为auto,意味着返回类型推导遵循模板类型推导原则,而非auto推导原则 C++11中加入_trailing return type_(尾返回类型),需要搭配decltype...处理变量时,它与auto不同,并不会去忽略掉顶层const,原变量是啥它就是啥•当decltype处理函数时,它只是获取函数返回类型,并不会去调用函数•当decltype处理表达式时,假设类型Tstd...int&,但是由于使用模板类型推导,返回类型会是int,而在C++中对右值进行赋值是非法,因此会编译失败。...void(*)(int, int)类型 typedef void(*MyFunc)(int, int); using MyFunc = void(*)(int, int); // 成员函数指针 using...,那么代表构造出来对象可以是一个编译期常量 以修饰函数例,函数是否返回值是否满足constexpr取决于两个方面 •传入参数是否是编译期常量•函数体内计算是否是编译期能够处理 当两者条件都能满足时

15410

Python 递归函数返回 None 解决办法

在使用 Python 开发过程中,避免不了会用到递归函数。但递归函数返回值有时会出现意想不到情况。 下面来举一个例子: >>> def fun(i): ... ...return i ... >>> r = fun(0) >>> print(r) 比如上面这段代码,乍一看没什么问题,但返回值并不是我们期望 5,而是 None。...>>> print(r) None 要解决这个问题也简单,就是在执行递归调用时候,加上 return 语句。 修改之后代码如下: >>> def fun(i): ... ...return i ... >>> r = fun(0) >>> print(r) 5 现在输出结果就符合我们预期了。...最后补充一句,如果想要了解这背后深层原理,可以看看函数调用栈相关资料,这里就不过多介绍了。 本文就到这里了,如果觉得有用的话欢迎点赞,转发和关注,谢谢。

67300

Java中,为什么byte类型取值范围-128~127?

大家好,又见面了,我是你们朋友全栈君。 在学习Java基础语法时候,初学者我们可能都会有这么一个疑问为什么byte类型取值范围为什么是[-128,127]而不是[-127,127]。...机器数是带符号,在计算机用一个数最高位存放符号, 正数0, 负数1。 比如:十进制中数 +3 ,计算机字长8位,转换成二进制就是00000011。如果是 -3 ,就是 10000011 。...所以,区别起见,将带符号位机器数对应真正数值称为机器数真值。...负数补码:反码+1 例如: 解释:为什么byte类型取值范围-128~127? 现在我们知道了计算机可以有三种编码方式表示一个数....这就是为什么8位二进制, 使用原码或反码表示范围[-127, +127], 而使用补码表示范围[-128, 127]。

1K20

C++:Lambda表达式

可选指定符序列。允许下列指定符: mutable :允许 body 修改以复制捕获参数,及调用其非 const 成员函数 constexpr :显式指定函数调用运算符 constexpr 函数。...此指定符不存在时,若函数调用运算符恰好满足所有 constexpr 函数要求,则它也会是 constexpr(C++17 起) consteval :指定函数调用运算符立即函数。...闭包类型 operator() 提供异常规定或 noexcept 子句。 ret - 返回类型(可选)。若缺失,则由函数 return 语句所隐含(或若函数返回任何值则为 void )。...如果 lambda 函数体仅包含一个返回语句或其表达式不返回值,则可以省略 lambda 表达式返回类型部分。 如果 lambda 函数体包含单个返回语句,编译器将从返回表达式类型推导返回类型。...否则,编译器会推导返回类型void。 3.6 函数体 Lambda 函数体可以包含普通方法或函数主体可以包含任何内容。

1K52
领券