Consider the following example:
// header props.h
#pragma once
#include <vector>
extern std::vector<int> prop;
struct addToVec
{
addToVec(int a)
{
prop.push_back(a);
}
};
// cpp file props.cpp
#include "props.h"
std::vector<int> prop;
addToVec b(10);
// main.cpp
#include <iostream>
#include "props.h"
addToVec a2(14);
int main(int argc, char** argv)
{
std::cout << prop.size();
return 0;
}
The expected out is 2. But the actual output is 1.
This gives the expected result (2) on gcc compiler (not sure of the version). I am using visual studio professional 2013 version 12 update 5. Is this a bug or an expected result?
The order in which the elements are added to the vector doesn't concern me. My only concern is that only one element is added to the vector(instead of 2).