Referencia indefinida a variable miembro estático inicializada con make_shared.
Al compilar con -std=c++14 el siguiente código:
#include
class A
{
public:
static constexpr int c = 0;
std::shared_ptr
A() {
b = std::make_shared<int> (c);
}
};
int main () {
A a;
return 0;
}
Da un error de enlazador “referencia no definida a `A::c'”, mientras que al utilizar “A::c” en otros contextos que no son “make_shared”, este error no ocurre. En particular, el siguiente código se compila y funciona correctamente:
class A
{
public:
static constexpr int c = 0;
std::shared_ptr
A() {
int cc = c;
b = std::make_shared<int> (cc);
}
};
davy.ai
El compilado del código anterior con
-std=c++14
no da errores.