trying to:
- fix sanitizer builds
- fix static analysis issue
- update static analysis tools
- add gcc 8 for osx
diff --git a/.travis.yml b/.travis.yml
index 80e3901..a2384c9 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -59,10 +59,10 @@
           packages: ["lcov"]
 
     # static code analysis
-    - env: COMPILER=clang++-4.0 STATIC_CODE_ANALYSIS=true
+    - env: COMPILER=clang++-5.0 STATIC_CODE_ANALYSIS=true
       addons: &clang40
         apt:
-          packages: ["clang-4.0", "clang-tidy-4.0", "cppcheck"]
+          packages: ["clang-5.0", "clang-tidy-5.0", "cppcheck"]
           sources: *apt_sources
 
     # GCC 4.4
@@ -191,7 +191,7 @@
           sources: *apt_sources
 
     # Clang 6.0
-    - env: COMPILER=clang++-6.0 HAS_ASAN_32=true HAS_UBSAN_32=true HAS_ASAN_64=true HAS_UBSAN_64=true
+    - env: COMPILER=clang++-6.0 HAS_ASAN_64=true HAS_UBSAN_64=true
       sudo: required      # see this issue for more details: https://github.com/travis-ci/travis-ci/issues/9033
       addons: &clang60
         apt:
@@ -262,6 +262,12 @@
       osx_image: xcode7.3
       os: osx
 
+    # OSX GCC 8
+    - env: COMPILER=g++-8 HAS_ASAN_32=true HAS_UBSAN_32=true HAS_ASAN_64=true HAS_UBSAN_64=true
+      compiler: gcc
+      osx_image: xcode7.3
+      os: osx
+
     # OSX LLVM-GCC
     - env: COMPILER=g++ HAS_ASAN_32=true HAS_ASAN_64=true
       compiler: gcc
@@ -269,34 +275,12 @@
 
   allow_failures:
 
-    # GCC 7
-    - env: COMPILER=g++-7 HAS_ASAN_32=true HAS_UBSAN_32=true HAS_ASAN_64=true HAS_UBSAN_64=true ADDITIONAL_CXX_FLAGS=" -fuse-ld=gold"
-      compiler: gcc
-      sudo: required
-
-    # GCC 8
-    - env: COMPILER=g++-8 HAS_ASAN_32=true HAS_UBSAN_32=true HAS_ASAN_64=true HAS_UBSAN_64=true ADDITIONAL_CXX_FLAGS=" -fuse-ld=gold"
-      compiler: gcc
-      sudo: required
-
     # Clang 3.7
     - env: COMPILER=clang++-3.7
 
     # Clang 3.9
     - env: COMPILER=clang++-3.9 HAS_ASAN_64=true HAS_UBSAN_64=true
 
-    # Clang 4.0
-    - env: COMPILER=clang++-4.0 HAS_ASAN_32=true HAS_UBSAN_32=true HAS_ASAN_64=true HAS_UBSAN_64=true
-      sudo: required
-
-    # Clang 5.0
-    - env: COMPILER=clang++-5.0 HAS_ASAN_32=true HAS_UBSAN_32=true HAS_ASAN_64=true HAS_UBSAN_64=true
-      sudo: required
-
-    # Clang 6.0
-    - env: COMPILER=clang++-6.0 HAS_ASAN_32=true HAS_UBSAN_32=true HAS_ASAN_64=true HAS_UBSAN_64=true
-      sudo: required
-
     # OSX GCC 6
     - env: COMPILER=g++-6 HAS_ASAN_32=true HAS_UBSAN_32=true HAS_ASAN_64=true HAS_UBSAN_64=true
       compiler: gcc
@@ -309,6 +293,12 @@
       osx_image: xcode7.3
       os: osx
 
+    # OSX GCC 8
+    - env: COMPILER=g++-8 HAS_ASAN_32=true HAS_UBSAN_32=true HAS_ASAN_64=true HAS_UBSAN_64=true
+      compiler: gcc
+      osx_image: xcode7.3
+      os: osx
+
 install:
   - if [[ "${CODE_COVERAGE}" == "true" ]]; then gem install coveralls-lcov ; fi
 
@@ -331,7 +321,7 @@
   # Install OCLint
   - |
     if [[ "${STATIC_CODE_ANALYSIS}" = "true" ]]; then
-      OCLINT_URL="https://github.com/oclint/oclint/releases/download/v0.12/oclint-0.12-x86_64-linux-3.13.0-112-generic.tar.gz"
+      OCLINT_URL="https://github.com/oclint/oclint/releases/download/v0.13.1/oclint-0.13.1-x86_64-linux-4.4.0-112-generic.tar.gz"
       mkdir oclint && travis_retry wget --no-check-certificate --quiet -O - ${OCLINT_URL} | tar --strip-components=1 -xz -C oclint
       export PATH=${DEPS_DIR}/oclint/bin:${PATH}
     fi
@@ -355,15 +345,6 @@
         brew install cmake
       fi
       # gcc
-      if [[ "${COMPILER}" = "g++-4.6" ]]; then
-        brew install gcc46
-      fi
-      if [[ "${COMPILER}" = "g++-4.7" ]]; then
-        brew install gcc47
-      fi
-      if [[ "${COMPILER}" = "g++-4.8" ]]; then
-        brew install gcc48
-      fi
       if [[ "${COMPILER}" = "g++-4.9" ]]; then
         brew install gcc49
       fi
@@ -376,6 +357,9 @@
       if [[ "${COMPILER}" = "g++-7" ]]; then
         brew install gcc7
       fi
+      if [[ "${COMPILER}" = "g++-8" ]]; then
+        brew install gcc8
+      fi
     fi
 
   - export CXX="${COMPILER}"
@@ -419,7 +403,7 @@
       # clang-tidy
       cd scripts/playground
       cmake ${CMAKE_OPTIONS_GLOBAL} ${CMAKE_OPTIONS} -DCMAKE_CXX_COMPILER=${CXX} . || exit 1
-      clang-tidy-4.0 -p=. *.cpp -header-filter=.* -warnings-as-errors=* -checks='*,-misc-macro-parentheses,-misc-definitions-in-headers,-misc-unused-parameters,-llvm-header-guard,-llvm-include-order,-google-readability-braces-around-statements,-google-runtime-references,-google-readability-todo,-google-build-using-namespace,-google-explicit-constructor,-cert-err58-cpp,-cppcoreguidelines-pro-type-vararg,-cppcoreguidelines-pro-bounds-pointer-arithmetic,-cppcoreguidelines-pro-bounds-array-to-pointer-decay,-cppcoreguidelines-special-member-functions,-cppcoreguidelines-pro-type-reinterpret-cast,-cppcoreguidelines-pro-bounds-constant-array-index,-cppcoreguidelines-pro-type-member-init,-cppcoreguidelines-pro-type-union-access,-clang-analyzer-security.insecureAPI.strcpy,-modernize-use-nullptr,-modernize-use-equals-default,-modernize-loop-convert,-modernize-use-auto,-readability-braces-around-statements,-readability-named-parameter,-readability-else-after-return,-readability-redundant-declaration,-readability-implicit-bool-cast' || exit 1
+      clang-tidy-5.0 -p=. *.cpp -header-filter=.* -warnings-as-errors=* -checks='*,-misc-macro-parentheses,-misc-definitions-in-headers,-misc-unused-parameters,-llvm-header-guard,-llvm-include-order,-google-readability-braces-around-statements,-google-runtime-references,-google-readability-todo,-google-build-using-namespace,-google-explicit-constructor,-cert-err58-cpp,-cppcoreguidelines-pro-type-vararg,-cppcoreguidelines-pro-bounds-pointer-arithmetic,-cppcoreguidelines-pro-bounds-array-to-pointer-decay,-cppcoreguidelines-special-member-functions,-cppcoreguidelines-pro-type-reinterpret-cast,-cppcoreguidelines-pro-bounds-constant-array-index,-cppcoreguidelines-pro-type-member-init,-cppcoreguidelines-pro-type-union-access,-clang-analyzer-security.insecureAPI.strcpy,-modernize-use-nullptr,-modernize-use-equals-default,-modernize-loop-convert,-modernize-use-auto,-readability-braces-around-statements,-readability-named-parameter,-readability-else-after-return,-readability-redundant-declaration,-readability-implicit-bool-cast' || exit 1
 
       # do not continue with other build configurations after that
       exit