当前位置: 首页 > 知识库问答 >
问题:

如何在成员函数中使用decltype

通京
2023-03-14

我试图在Visual Studio2012中的成员函数上使用decltype。我偶然发现了一个特性,我想知道这是故意的还是编译器的bug。考虑一下(只是一个代码片段,没有说明我的观点的意思):

struct Test { int f() {return 0;} } T;
std::integral_constant<decltype(T.f()), 5>;
std::integral_constant<decltype(&Test::f), 5>; // error C2440
std::integral_constant<decltype(((Test*)nullptr)->f()), 5>;

共有1个答案

红弘盛
2023-03-14

&test::f不调用成员函数test::f。相反,它获取成员函数的地址,并生成一个指向成员函数的指针,该指针的类型为int(test::*)()

为了执行您想要的操作,您应该使用std::declval。正确的语法是

std::integral_constant<decltype(std::declval<Test>().f()), 5>
 类似资料:
  • 员函数调整客户的银行借贷(例如 BanLAccount 类的 private 数据成员)。 类通常提供 public 成员函数,让类的客户设置(写入)或读取(取得) private 数据成员的值。这些函数通常称为get和set。更具体地说,设置数据成员interestRate的成员函数通常称为setInterestRate,读取数据成员IntersetRate的值通常称为 getInterestR

  • 当从基类派生出一个派生类时,派生类的成员函数可能需要访问基类的某些成员函数。 软件工程视点 9.2 派生类不能直接访问其基类的 private 成员。 这是 C++ 中关键的软件工程视点。如果派生类能访问其基类的 private 成员,那么就会破坏基类的封装性。隐藏 private 成员有助于测试、调试和正确地修改系统。如果派生类能访问其基类的 private 成员,那么从派生类派生出的类也应该能

  • 本文向大家介绍C++在成员函数中使用STL的find_if函数实例,包括了C++在成员函数中使用STL的find_if函数实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C++在成员函数中使用STL的find_if函数的方法。分享给大家供大家参考。具体方法分析如下: 一般来说,STL的find_if函数功能很强大,可以使用输入的函数替代等于操作符执行查找功能(这个网上有很多资料,我这里

  • 我希望一个类有两种不同的实现,并根据布尔模板参数进行选择。我尝试使用本答案中描述的SFINAE原则,如下所示: 然而,我在gcc下遇到了一个错误“不能在类范围内专门化函数”,我不明白为什么。虽然我的代码与链接答案中的代码并不完全相同,但它似乎非常相似,我无法发现关键的区别。 我还尝试使用类似于此答案中建议的语法,但也不起作用(错误是“不能重新声明类成员”): 我怎样才能做到这一点?

  • 本文向大家介绍浅析成员函数和常成员函数的调用,包括了浅析成员函数和常成员函数的调用的使用技巧和注意事项,需要的朋友参考一下 在Coordinate类中,有一个Display()成员函数和一个Display() const常成员函数,代码如下 Display()成员函数和一个Display() const常成员函数是互为重载的,那么如果我们直接像下面这样调用该方法,会调用的是哪个呢? 那么运行下程序

  • 当我尝试使用facebook对用户进行身份验证时,我可以将数据存储到用户表中,但无法将数据创建到soical_帐户中。因此,在出现错误后,会出现“调用成员函数创建()on null”。谁能给我一个解决方案,说明我错在哪里。 在我的社会账户控制中,我有以下方法 在我的数据库迁移中,我有用户和social_accounts用户与social_accounts有一对多的关系。 用户表: Social_a

  • 我想基本验证,如果用户是管理员,然后请求下一步,否则重定向到主页 User.php: 最后一个函数是 一个dmin.php(这是中间件): routes.php: 我得到以下错误: Admin.php第21行中的FatalErrorException: 调用null上的成员函数isAdmin() 我还添加了

  • 我有一堂简单的课 当我尝试编译时,我收到了这条消息: 错误:将“const foo”作为“void foo::func2()”的“this”参数传递将丢弃限定符[-fpermissive] 我理解const对象的非const成员的使用,我的问题是“this”指针如何用作函数2的参数?