Lambda como uma variável de modelo
Durante alguma investigação relacionada ao "Modelo variável", descobri um comportamento de código estranho para mim. O padrão diz alguma coisa sobre esse comportamento?
//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';
}
Saída
0
10
Eu espero
10
10