相关疑难解决方法(0)

Lambda作为模板变量

在与"变量模板"相关的一些调查中,我发现了一些奇怪的代码行为.标准是否说明了这种行为?

//Header.h
#pragma once

template<typename T>
auto myvar = []() -> T&{
    static T v;
    return v;
};

//Source.cpp
#include <iostream>
#include "Header.h"

void testFunction()
{
    std::cout << myvar<int>() << '\n';
}

//main.cpp
#include <iostream>
#include "Header.h"

void testFunction();

int main(int argc, char **argv) 
{
    myvar<int>() = 10;

    testFunction();

    std::cout << myvar<int>() << '\n';
}
Run Code Online (Sandbox Code Playgroud)

输出:

0
10
Run Code Online (Sandbox Code Playgroud)

我预计:

10
10
Run Code Online (Sandbox Code Playgroud)

c++ templates language-lawyer

8
推荐指数
1
解决办法
198
查看次数

标签 统计

c++ ×1

language-lawyer ×1

templates ×1