diff --git a/SConstruct b/SConstruct
index 5e33af1ecb3aaeb23aa8041380a1d919d6577e17..2a0b29bcfca1c10b8dab12e5703472d3badde083 100644
--- a/SConstruct
+++ b/SConstruct
@@ -40,10 +40,10 @@ EnsureSConsVersion(2,1,0)
 #
 baseenv.Append(MAIN_DIR= Dir('.').abspath)
 baseenv.Append(HC_DIR= baseenv.subst('$MAIN_DIR'))
-baseenv.Append(HC_SRC= baseenv.subst('$HC_DIR')+'/src ') 
+baseenv.Append(HC_SRC= baseenv.subst('$HC_DIR')+'/src ')
 baseenv.Append(HA_DIR= baseenv.subst('$HC_DIR')+'/podd ')
-baseenv.Append(HA_SRC= baseenv.subst('$HA_DIR')+'/src ') 
-baseenv.Append(HA_DC= baseenv.subst('$HA_DIR')+'/hana_decode ') 
+baseenv.Append(HA_SRC= baseenv.subst('$HA_DIR')+'/src ')
+baseenv.Append(HA_DC= baseenv.subst('$HA_DIR')+'/hana_decode ')
 baseenv.Append(MAJORVERSION = '1')
 baseenv.Append(MINORVERSION = '6')
 baseenv.Append(PATCH = '0')
@@ -58,7 +58,7 @@ print "Software Version = %s" % baseenv.subst('$VERSION')
 ivercode = 65536*int(float(baseenv.subst('$SOVERSION')))+ 256*int(10*(float(baseenv.subst('$SOVERSION'))-int(float(baseenv.subst('$SOVERSION')))))+ int(float(baseenv.subst('$PATCH')))
 baseenv.Append(VERCODE = ivercode)
 #
-# evio environment 
+# evio environment
 #
 evio_libdir = os.getenv('EVIO_LIBDIR')
 evio_incdir = os.getenv('EVIO_INCDIR')
@@ -73,8 +73,8 @@ if evio_libdir is None or evio_incdir is None:
 	platform = uname[0];
 	machine = uname[4];
 	evio_name = platform + '-' + machine
-	print "evio_name = %s" % evio_name	
-	evio_local_lib = "%s/evio-%s/%s/lib" % (evio_local,evio_version,evio_name) 
+	print "evio_name = %s" % evio_name
+	evio_local_lib = "%s/evio-%s/%s/lib" % (evio_local,evio_version,evio_name)
 	evio_local_inc = "%s/evio-%s/%s/include" % (evio_local,evio_version,evio_name)
 	evio_tarfile = "%s/evio-%s.tgz" % (evio_local,evio_version)
 
@@ -177,7 +177,7 @@ def which(program):
 	import os
 	def is_exe(fpath):
 		return os.path.isfile(fpath) and os.access(fpath, os.X_OK)
-	
+
 	fpath, fname = os.path.split(program)
 	if fpath:
 		if is_exe(program):
@@ -220,6 +220,18 @@ pbaseenv.Prepend(LIBS=[hallclib,hallalib,dclib,eviolib])
 baseenv.Prepend(LIBS=[hallalib,dclib,eviolib])
 Export('pbaseenv')
 
+if pbaseenv['CXX'] == 'g++':
+	gxxVersion = [int(i) for i in pbaseenv['CXXVERSION'].split('.')]
+	if (gxxVersion[0] < 4) or (gxxVersion[0] == 4 and gxxVersion[1] < 4):
+		print('Error: g++ version too old! Need at least g++ 4.4!')
+		Exit(1)
+	elif gxxVersion[0] == 4 and 4 <= gxxVersion[1] < 7:
+		if '-std=c++0x' not in pbaseenv['CXXFLAGS']:
+			pbaseenv.Append(CXXFLAGS='-std=c++0x')
+	else:
+		if '-std=c++11' not in pbaseenv['CXXFLAGS']:
+			pbaseenv.Append(CXXFLAGS='-std=c++11')
+
 SConscript(dirs = directorylist,name='SConscript.py',exports='baseenv')
 
 #######  End of SConstruct #########
diff --git a/src/THcDummySpectrometer.cxx b/src/THcDummySpectrometer.cxx
index 58edf3fab4fe03e8d864cdc1e16e1b9332984b33..937ef7e13d5b6ca67078a6f1888bfc7f9858c772 100644
--- a/src/THcDummySpectrometer.cxx
+++ b/src/THcDummySpectrometer.cxx
@@ -94,7 +94,8 @@ Int_t THcDummySpectrometer::DefineVariables(THaAnalysisObject::EMode mode) {
   fIsSetup = (mode == kDefine);
 
   std::vector<RVarDef> vars;
-  vars.push_back({0});
+  RVarDef end {0};
+  vars.push_back(end);
 
   return DefineVarsFromList(vars.data(), mode);
 }
diff --git a/src/THcTrigApp.cxx b/src/THcTrigApp.cxx
index 512e5bc43945e5b9dc8008d83cccd0c13ca544ab..b69900c5d7da2f34e0f6e17f5c32f894ffc503dc 100644
--- a/src/THcTrigApp.cxx
+++ b/src/THcTrigApp.cxx
@@ -95,7 +95,8 @@ Int_t THcTrigApp::DefineVariables(THaAnalysisObject::EMode mode) {
   fIsSetup = (mode == kDefine);
 
   std::vector<RVarDef> vars;
-  vars.push_back({0});
+  RVarDef end {0};
+  vars.push_back(end);
 
   return DefineVarsFromList(vars.data(), mode);
 }
diff --git a/src/THcTrigDet.cxx b/src/THcTrigDet.cxx
index 5d1abd0371ec7f6f5e8187f1ddb1647f0ce67e8b..eb44c82a3dbe1ae57b6f3cd3f02377751ca8a9e1 100644
--- a/src/THcTrigDet.cxx
+++ b/src/THcTrigDet.cxx
@@ -238,27 +238,30 @@ Int_t THcTrigDet::DefineVariables(THaAnalysisObject::EMode mode) {
   for (int i=0; i<fNumAdc; ++i) {
     adcValTitle.at(i) = fAdcNames.at(i) + "_adc";
     adcValVar.at(i) = TString::Format("fAdcVal[%d]", i);
-    vars.push_back({
+    RVarDef entry1 {
       adcValTitle.at(i).Data(),
       adcValTitle.at(i).Data(),
       adcValVar.at(i).Data()
-    });
+    };
+    vars.push_back(entry1);
 
     adcPedestalTitle.at(i) = fAdcNames.at(i) + "_adcPed";
     adcPedestalVar.at(i) = TString::Format("fAdcPedestal[%d]", i);
-    vars.push_back({
+    RVarDef entry2 {
       adcPedestalTitle.at(i).Data(),
       adcPedestalTitle.at(i).Data(),
       adcPedestalVar.at(i).Data()
-    });
+    };
+    vars.push_back(entry2);
 
     adcMultiplicityTitle.at(i) = fAdcNames.at(i) + "_adcMult";
     adcMultiplicityVar.at(i) = TString::Format("fAdcMultiplicity[%d]", i);
-    vars.push_back({
+    RVarDef entry3 {
       adcMultiplicityTitle.at(i).Data(),
       adcMultiplicityTitle.at(i).Data(),
       adcMultiplicityVar.at(i).Data()
-    });
+    };
+    vars.push_back(entry3);
   }
 
   // Push the variable names for TDC channels.
@@ -267,22 +270,25 @@ Int_t THcTrigDet::DefineVariables(THaAnalysisObject::EMode mode) {
   for (int i=0; i<fNumTdc; ++i) {
     tdcValTitle.at(i) = fTdcNames.at(i) + "_tdc";
     tdcValVar.at(i) = TString::Format("fTdcVal[%d]", i);
-    vars.push_back({
+    RVarDef entry1 {
       tdcValTitle.at(i).Data(),
       tdcValTitle.at(i).Data(),
       tdcValVar.at(i).Data()
-    });
+    };
+    vars.push_back(entry1);
 
     tdcMultiplicityTitle.at(i) = fTdcNames.at(i) + "_tdcMult";
     tdcMultiplicityVar.at(i) = TString::Format("fTdcMultiplicity[%d]", i);
-    vars.push_back({
+    RVarDef entry2 {
       tdcMultiplicityTitle.at(i).Data(),
       tdcMultiplicityTitle.at(i).Data(),
       tdcMultiplicityVar.at(i).Data()
-    });
+    };
+    vars.push_back(entry2);
   }
 
-  vars.push_back({0});
+  RVarDef end {0};
+  vars.push_back(end);
 
   return DefineVarsFromList(vars.data(), mode);
 }