From a60670d93e35aff1661417f969153933e581323c Mon Sep 17 00:00:00 2001 From: =?utf8?q?=EB=B0=95=EC=A2=85=ED=98=84/=EB=8F=99=EC=9E=91=EC=A0=9C?= =?utf8?q?=EC=96=B4Lab=28SR=29/Senior=20Engineer/=EC=82=BC=EC=84=B1?= =?utf8?q?=EC=A0=84=EC=9E=90?= Date: Mon, 23 Apr 2018 08:50:38 +0900 Subject: [PATCH] Fix GCC 4.8 build error (#108) * Fix GCC 4.8 build error This commit fixes build errors on GCC 4.8 to enable build CI. Signed-off-by: Jonghyun Park * Fix typos --- contrib/caffegen/include/LayerResolver.h | 5 ++++- contrib/caffegen/src/LayerResolver.cpp | 2 +- contrib/caffegen/src/ParameterRandomizePass.cpp | 4 +++- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/contrib/caffegen/include/LayerResolver.h b/contrib/caffegen/include/LayerResolver.h index 30a1c44..2775cfa 100644 --- a/contrib/caffegen/include/LayerResolver.h +++ b/contrib/caffegen/include/LayerResolver.h @@ -16,7 +16,10 @@ public: const LayerFactory &resolve(const std::string &type) const; private: - std::map> _factories; + // NOTE Here std::shared_ptr is used instead of std::unique_ptr + // as GCC 4.8.3 complains about the use of copy constructor even when _factories field + // is never used. + std::map> _factories; }; #endif // __LAYER_RESOLVER_H__ diff --git a/contrib/caffegen/src/LayerResolver.cpp b/contrib/caffegen/src/LayerResolver.cpp index 85849d6..d0c3aa2 100644 --- a/contrib/caffegen/src/LayerResolver.cpp +++ b/contrib/caffegen/src/LayerResolver.cpp @@ -4,7 +4,7 @@ #include -template std::unique_ptr make_factory(void) +template std::shared_ptr make_factory(void) { struct LayerFactoryImpl final : public LayerFactory { diff --git a/contrib/caffegen/src/ParameterRandomizePass.cpp b/contrib/caffegen/src/ParameterRandomizePass.cpp index d2c017f..c98dd53 100644 --- a/contrib/caffegen/src/ParameterRandomizePass.cpp +++ b/contrib/caffegen/src/ParameterRandomizePass.cpp @@ -2,8 +2,10 @@ #include +// NOTE GCC 4.8.3 emits the following error with brace-initialization on r-value reference +// error: invalid initialization of non-const reference of type '..' from an rvalue of type '..' ParameterRandomizePass::ParameterRandomizePass(std::default_random_engine &generator) - : _generator{generator} + : _generator(generator) { // DO NOTHING } -- 2.7.4