Status(*Visit)(TElemType e)啥意思,输入e后返回值是啥

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Status(*Visit)(TElemType e)啥意思,输入e后返回值是啥相关的知识,希望对你有一定的参考价值。

参考技术A if %1== @echo Syntax: MSDTC1 Filename&goto :EOF
setlocal ENABLEDELAYEDEXPANSION
set filename=%1
if exist %filename% del /q %filename%
(追问

嗯?没看懂

参考技术B C++函数可以有返回值,也可以没有返回值。对于没有返回值的函数,功能只是完成一个操作。而带返回值的函数,返回值的用处主要是向调用该函数的环境传递数据或者信息。
C++函数返回值要注意以下几点:
1) 函数的返回值是通过函数中的return语句获得的。return语句将被调用函数中的一个确定值带回主调函数中去。
return语句后面的括号可以要,也可以不要。return后面的值可以是一个表达式。
2) 函数值的类型。既然函数有返回值,这个值当然应属于某一个确定的类型,应当在定义函数时指定函数值的类型。
3) 如果函数值的类型和return语句中表达式的值不一致,则以函数类型为准,即函数类型决定返回值的类型。对数值型数据,可以自动进行类型转换。追问

额……那么这个的返回值是啥

std::visit 和 MSVC 调试器的堆栈损坏“重载”结构

【中文标题】std::visit 和 MSVC 调试器的堆栈损坏“重载”结构【英文标题】:Stack corruption "overloaded" struct for std::visit and MSVC debugger 【发布时间】:2019-02-13 20:45:58 【问题描述】:

我正在使用 cppreference.com page for std::visit 中的代码,并在 Visual Studio 2017(15.9.6 和 15.9.7)调试版本(x86 和 x64,有或没有附加到进程的调试器)中遇到问题) 使用以下代码:

#include <iostream>

template<class... Ts> struct overloaded : Ts...  using Ts::operator()...; ;
template<class... Ts> overloaded(Ts...)->overloaded<Ts...>;

int main()

    auto op = overloaded
        [](int x)  std::cout << "Got int: " << x << '\n'; ,
        [](const char* s)  std::cout << "Got cstring: " << s << '\n'; 
    ;

    op(4);
    op("Hello");

在函数退出时,程序失败并显示消息“运行时检查失败 #2 - 变量 'op' 周围的堆栈已损坏。”

发布版本不会抛出这个错误,当我在 g++ 和 clang++ 下编译它时,我没有遇到这个问题。

我还注意到,如下设置 op 可以解决问题:

auto l1 = [](int x)  std::cout << "Got int: " << x << '\n'; ;
auto l2 = [](const char* s)  std::cout << "Got cstring: " << s << '\n'; ;

auto op = overloadedl1, l2;

第一个代码示例是否会导致未定义的行为和/或我是否遇到了编译器错误?

【问题讨论】:

使用 MSVC 提交错误 【参考方案1】:

事实证明这段代码应该可以工作,我遇到了Visual Studio bug。

【讨论】:

以上是关于Status(*Visit)(TElemType e)啥意思,输入e后返回值是啥的主要内容,如果未能解决你的问题,请参考以下文章

c语言里,怎样判断共用体union的数据类型?

std::visit 函数中的 和 () 有啥区别?

可以优化 std::visit 吗?

赛普拉斯,cy.visit() 尝试加载 ESOCKETTIMEDOUT 失败

PHPUnit 错误:调用未定义的方法 Tests\Unit\ExampleTest::visit()

仅当访问 Laravel 5 中的根页面( visit('/') )时,PHPUnit 测试才会失败