This is an automated email from the git hooks/post-receive script. sebastic pushed a commit to branch master in repository mapbox-variant.
commit 66aad213ec27235844d7400d7788458426bfff3a Author: Bas Couwenberg <sebas...@xs4all.nl> Date: Wed Jan 18 20:58:04 2017 +0100 Imported Upstream version 1.1.5 --- .travis.yml | 188 +++++++++++++++++++++++++---------------- Makefile | 92 +++++++++++++------- README.md | 2 +- include/mapbox/variant.hpp | 16 +++- package.json | 10 +++ test/t/binary_visitor_impl.hpp | 4 +- 6 files changed, 204 insertions(+), 108 deletions(-) diff --git a/.travis.yml b/.travis.yml index 4119d9e..0801c0e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,102 +2,136 @@ language: generic sudo: false -# Save common build configurations as shortcuts, so we can reference them later. -addons_shortcuts: - addons_clang35: &clang35 - apt: - sources: [ 'ubuntu-toolchain-r-test', 'llvm-toolchain-precise-3.5' ] - packages: [ 'clang-3.5', 'llvm-3.5-dev' ] - addons_clang36: &clang36 - apt: - sources: [ 'ubuntu-toolchain-r-test', 'llvm-toolchain-precise-3.6' ] - packages: [ 'clang-3.6' ] - addons_clang37: &clang37 - apt: - sources: [ 'ubuntu-toolchain-r-test', 'llvm-toolchain-precise-3.7' ] - packages: [ 'clang-3.7' ] - addons_clang38: &clang38 - apt: - sources: [ 'ubuntu-toolchain-r-test', 'llvm-toolchain-precise-3.8' ] - packages: [ 'clang-3.8'] - addons_clang39: &clang39 - apt: - sources: [ 'ubuntu-toolchain-r-test', 'llvm-toolchain-precise' ] - packages: [ 'clang-3.9'] - addons_gcc47: &gcc47 - apt: - sources: [ 'ubuntu-toolchain-r-test' ] - packages: [ 'g++-4.7' ] - addons_gcc48: &gcc48 - apt: - sources: [ 'ubuntu-toolchain-r-test' ] - packages: [ 'g++-4.8' ] - addons_gcc49: &gcc49 - apt: - sources: [ 'ubuntu-toolchain-r-test' ] - packages: [ 'g++-4.9' ] - addons_gcc5: &gcc5 - apt: - sources: [ 'ubuntu-toolchain-r-test' ] - packages: [ 'g++-5' ] - matrix: include: + # clang++ 3.9 via mason with -flto and -fsanitize=cfi + - os: linux + compiler: "clang++-39-mason" + env: CXX=clang++-3.9 CXXFLAGS="-flto -fsanitize=cfi -fvisibility=hidden" LDFLAGS="-flto -fsanitize=cfi -fvisibility=hidden" + addons: + apt: + sources: [ 'ubuntu-toolchain-r-test' ] + packages: [ 'libstdc++-4.9-dev' ] + before_install: + - git submodule update --init + - ./.mason/mason install clang++ 3.9.1 + - export PATH=$(./.mason/mason prefix clang++ 3.9.1)/bin:${PATH} + - ./.mason/mason install binutils 2.27 + - export PATH=$(./.mason/mason prefix binutils 2.27)/bin:${PATH} + # clang++ 3.9 via mason with -fsanitize=address + - os: linux + compiler: "clang++-39-mason" + env: CXX=clang++-3.9 CXXFLAGS="-fsanitize=address -fsanitize-address-use-after-scope -fno-omit-frame-pointer -fno-common" LDFLAGS="-fsanitize=address" ASAN_OPTIONS=check_initialization_order=1:detect_stack_use_after_return=1 + addons: + apt: + sources: [ 'ubuntu-toolchain-r-test' ] + packages: [ 'libstdc++-4.9-dev' ] + before_install: + - git submodule update --init + - ./.mason/mason install clang++ 3.9.1 + - export PATH=$(./.mason/mason prefix clang++ 3.9.1)/bin:${PATH} + # clang++ 3.9 via mason with -fsanitize=undefined + - os: linux + compiler: "clang++-39-mason" + env: CXX=clang++-3.9 CXXFLAGS="-fsanitize=undefined" LDFLAGS="-fsanitize=undefined" + addons: + apt: + sources: [ 'ubuntu-toolchain-r-test' ] + packages: [ 'libstdc++-4.9-dev' ] + before_install: + - git submodule update --init + - ./.mason/mason install clang++ 3.9.1 + - export PATH=$(./.mason/mason prefix clang++ 3.9.1)/bin:${PATH} + # clang++ 3.9 via mason with -fsanitize=integer + - os: linux + compiler: "clang++-39-mason" + env: CXX=clang++-3.9 CXXFLAGS="-fsanitize=integer" LDFLAGS="-fsanitize=integer" + addons: + apt: + sources: [ 'ubuntu-toolchain-r-test' ] + packages: [ 'libstdc++-4.9-dev' ] + before_install: + - git submodule update --init + - ./.mason/mason install clang++ 3.9.1 + - export PATH=$(./.mason/mason prefix clang++ 3.9.1)/bin:${PATH} + # clang++ 3.9 via mason with -fsanitize=safe-stack + - os: linux + compiler: "clang++-39-mason" + env: CXX=clang++-3.9 CXXFLAGS="-fsanitize=safe-stack" LDFLAGS="-fsanitize=safe-stack" + addons: + apt: + sources: [ 'ubuntu-toolchain-r-test' ] + packages: [ 'libstdc++-4.9-dev' ] + before_install: + - git submodule update --init + - ./.mason/mason install clang++ 3.9.1 + - export PATH=$(./.mason/mason prefix clang++ 3.9.1)/bin:${PATH} - os: osx - osx_image: xcode7 - env: TEST_GYP_BUILD=True + osx_image: xcode8 + env: OSX_OLDEST_SUPPORTED=10.7 TEST_GYP_BUILD=True + compiler: clang + - os: osx + osx_image: xcode8 + env: OSX_OLDEST_SUPPORTED=10.12 compiler: clang - os: linux compiler: "clang35" env: CXX=clang++-3.5 COVERAGE=True - addons: *clang35 + addons: + apt: + sources: [ 'ubuntu-toolchain-r-test', 'llvm-toolchain-precise-3.5' ] + packages: [ 'clang-3.5', 'libstdc++-4.9-dev' ] - os: linux compiler: "clang36" env: CXX=clang++-3.6 - addons: *clang36 + addons: + apt: + sources: [ 'ubuntu-toolchain-r-test', 'llvm-toolchain-precise-3.6' ] + packages: [ 'clang-3.6' ] - os: linux compiler: "clang37" env: CXX=clang++-3.7 - addons: *clang37 - - os: linux - compiler: "clang38" - env: CXX=clang++-3.8 - addons: *clang38 - - os: linux - compiler: "clang38" - env: CXX=clang++-3.8 CXX_STD=c++14 - addons: *clang38 - # not whitelisted yet: https://github.com/travis-ci/apt-package-whitelist/issues/2764 - #- os: linux - # compiler: "clang39" - # env: CXX=clang++-3.9 - # addons: *clang39 + addons: + apt: + sources: [ 'ubuntu-toolchain-r-test', 'llvm-toolchain-precise-3.7' ] + packages: [ 'clang-3.7' ] - os: linux compiler: "gcc47" - env: CXX=g++-4.7 - addons: *gcc47 + env: CXX=g++-4.7 CXXFLAGS="-Wno-parentheses" + addons: + apt: + sources: [ 'ubuntu-toolchain-r-test' ] + packages: [ 'g++-4.7' ] - os: linux compiler: "gcc48" env: CXX=g++-4.8 - addons: *gcc48 + addons: + apt: + sources: [ 'ubuntu-toolchain-r-test' ] + packages: [ 'g++-4.8' ] - os: linux compiler: "gcc49" env: CXX=g++-4.9 - addons: *gcc49 - - os: linux - compiler: "gcc49" - env: CXX=g++-4.9 CXX_STD=c++14 - addons: *gcc49 + addons: + apt: + sources: [ 'ubuntu-toolchain-r-test' ] + packages: [ 'g++-4.9' ] - os: linux compiler: "gcc5" - env: CXX=g++-5 CXXFLAGS="-D_GLIBCXX_USE_CXX11_ABI=0" - addons: *gcc5 + env: CXX=g++-5 + addons: + apt: + sources: [ 'ubuntu-toolchain-r-test' ] + packages: [ 'g++-5' ] - os: linux - compiler: "gcc5" - env: CXX=g++-5 CXXFLAGS="-D_GLIBCXX_USE_CXX11_ABI=1" - addons: *gcc5 + compiler: "gcc6" + env: CXX=g++-6 CXX_STD=c++14 + addons: + apt: + sources: [ 'ubuntu-toolchain-r-test' ] + packages: [ 'g++-6' ] -before_install: +install: - echo ${CXX} - if [[ $(uname -s) == 'Linux' ]]; then export PYTHONPATH=$(pwd)/.local/lib/python2.7/site-packages; @@ -108,7 +142,15 @@ before_install: PYTHONUSERBASE=$(pwd)/.local pip install --user cpp-coveralls; fi -install: +script: + # Build in Release + - make test + - make bench + - make sizes + - scripts/run_compilation_failure_tests.sh + - make clean; + # Build in Debug + - export BUILDTYPE=Debug - make test - make bench - make sizes @@ -118,7 +160,7 @@ install: make gyp; fi -script: +after_script: - if [[ ${COVERAGE:-0} == 'True' ]]; then make clean; make coverage; diff --git a/Makefile b/Makefile index 10ab7b5..808592d 100644 --- a/Makefile +++ b/Makefile @@ -1,23 +1,53 @@ MASON = .mason/mason -BOOST_VERSION = boost 1.60.0 +BOOST_VERSION = 1.62.0 CXX := $(CXX) CXX_STD ?= c++11 -BOOST_FLAGS = `$(MASON) cflags $(BOOST_VERSION)` -RELEASE_FLAGS = -O3 -DNDEBUG -march=native -DSINGLE_THREADED -fvisibility-inlines-hidden -DEBUG_FLAGS = -O0 -g -DDEBUG -fno-inline-functions -COMMON_FLAGS = -Wall -pedantic -Wextra -Wsign-compare -Wsign-conversion -Wshadow -Wunused-parameter -std=$(CXX_STD) +BOOST_ROOT = $(shell $(MASON) prefix boost $(BOOST_VERSION)) +BOOST_FLAGS = -isystem $(BOOST_ROOT)/include/ +RELEASE_FLAGS = -O3 -DNDEBUG -march=native -DSINGLE_THREADED -fvisibility-inlines-hidden -fvisibility=hidden +DEBUG_FLAGS = -O0 -g -DDEBUG -fno-inline-functions -fno-omit-frame-pointer -fPIE +WARNING_FLAGS = -Werror -Wall -Wextra -pedantic \ + -Wformat=2 -Wsign-conversion -Wshadow -Wunused-parameter + +COMMON_FLAGS = -std=$(CXX_STD) +COMMON_FLAGS += $(WARNING_FLAGS) + CXXFLAGS := $(CXXFLAGS) LDFLAGS := $(LDFLAGS) +export BUILDTYPE ?= Release + +OS := $(shell uname -s) +ifeq ($(OS), Linux) + EXTRA_FLAGS = -pthread +endif +ifeq ($(OS), Darwin) + OSX_OLDEST_SUPPORTED ?= 10.7 + # we need to explicitly ask for libc++ otherwise the + # default will flip back to libstdc++ for mmacosx-version-min < 10.9 + EXTRA_FLAGS = -stdlib=libc++ -mmacosx-version-min=$(OSX_OLDEST_SUPPORTED) +endif + + +ifeq ($(BUILDTYPE),Release) + FINAL_CXXFLAGS := $(COMMON_FLAGS) $(RELEASE_FLAGS) $(CXXFLAGS) $(EXTRA_FLAGS) +else + FINAL_CXXFLAGS := $(COMMON_FLAGS) $(DEBUG_FLAGS) $(CXXFLAGS) $(EXTRA_FLAGS) +endif + + + ALL_HEADERS = $(shell find include/mapbox/ '(' -name '*.hpp' ')') all: out/bench-variant out/unique_ptr_test out/unique_ptr_test out/recursive_wrapper_test out/binary_visitor_test out/lambda_overload_test out/hashable_test -mason_packages: +$(MASON): git submodule update --init .mason - $(MASON) install $(BOOST_VERSION) + +mason_packages/headers/boost: $(MASON) + $(MASON) install boost $(BOOST_VERSION) ./deps/gyp: git clone --depth 1 https://chromium.googlesource.com/external/gyp.git ./deps/gyp @@ -25,35 +55,35 @@ mason_packages: gyp: ./deps/gyp deps/gyp/gyp --depth=. -Goutput_dir=./ --generator-output=./out -f make make V=1 -C ./out tests - ./out/Release/tests + ./out/$(BUILDTYPE)/tests -out/bench-variant-debug: Makefile mason_packages test/bench_variant.cpp +out/bench-variant-debug: Makefile mason_packages/headers/boost test/bench_variant.cpp mkdir -p ./out - $(CXX) -o out/bench-variant-debug test/bench_variant.cpp -I./include -Itest/include -pthreads $(DEBUG_FLAGS) $(COMMON_FLAGS) $(CXXFLAGS) $(LDFLAGS) $(BOOST_FLAGS) + $(CXX) -o out/bench-variant-debug test/bench_variant.cpp -I./include -isystem test/include $(FINAL_CXXFLAGS) $(LDFLAGS) $(BOOST_FLAGS) -out/bench-variant: Makefile mason_packages test/bench_variant.cpp +out/bench-variant: Makefile mason_packages/headers/boost test/bench_variant.cpp mkdir -p ./out - $(CXX) -o out/bench-variant test/bench_variant.cpp -I./include -Itest/include $(RELEASE_FLAGS) $(COMMON_FLAGS) $(CXXFLAGS) $(LDFLAGS) $(BOOST_FLAGS) + $(CXX) -o out/bench-variant test/bench_variant.cpp -I./include -isystem test/include $(FINAL_CXXFLAGS) $(LDFLAGS) $(BOOST_FLAGS) -out/unique_ptr_test: Makefile mason_packages test/unique_ptr_test.cpp +out/unique_ptr_test: Makefile mason_packages/headers/boost test/unique_ptr_test.cpp mkdir -p ./out - $(CXX) -o out/unique_ptr_test test/unique_ptr_test.cpp -I./include -Itest/include $(RELEASE_FLAGS) $(COMMON_FLAGS) $(CXXFLAGS) $(LDFLAGS) $(BOOST_FLAGS) + $(CXX) -o out/unique_ptr_test test/unique_ptr_test.cpp -I./include -isystem test/include $(FINAL_CXXFLAGS) $(LDFLAGS) $(BOOST_FLAGS) -out/recursive_wrapper_test: Makefile mason_packages test/recursive_wrapper_test.cpp +out/recursive_wrapper_test: Makefile mason_packages/headers/boost test/recursive_wrapper_test.cpp mkdir -p ./out - $(CXX) -o out/recursive_wrapper_test test/recursive_wrapper_test.cpp -I./include -Itest/include $(RELEASE_FLAGS) $(COMMON_FLAGS) $(CXXFLAGS) $(LDFLAGS) $(BOOST_FLAGS) + $(CXX) -o out/recursive_wrapper_test test/recursive_wrapper_test.cpp -I./include -isystem test/include $(FINAL_CXXFLAGS) $(LDFLAGS) $(BOOST_FLAGS) -out/binary_visitor_test: Makefile mason_packages test/binary_visitor_test.cpp +out/binary_visitor_test: Makefile mason_packages/headers/boost test/binary_visitor_test.cpp mkdir -p ./out - $(CXX) -o out/binary_visitor_test test/binary_visitor_test.cpp -I./include -Itest/include $(RELEASE_FLAGS) $(COMMON_FLAGS) $(CXXFLAGS) $(LDFLAGS) $(BOOST_FLAGS) + $(CXX) -o out/binary_visitor_test test/binary_visitor_test.cpp -I./include -isystem test/include $(FINAL_CXXFLAGS) $(LDFLAGS) $(BOOST_FLAGS) -out/lambda_overload_test: Makefile mason_packages test/lambda_overload_test.cpp +out/lambda_overload_test: Makefile mason_packages/headers/boost test/lambda_overload_test.cpp mkdir -p ./out - $(CXX) -o out/lambda_overload_test test/lambda_overload_test.cpp -I./include -Itest/include $(RELEASE_FLAGS) $(COMMON_FLAGS) $(CXXFLAGS) $(LDFLAGS) $(BOOST_FLAGS) + $(CXX) -o out/lambda_overload_test test/lambda_overload_test.cpp -I./include -isystem test/include $(FINAL_CXXFLAGS) $(LDFLAGS) $(BOOST_FLAGS) -out/hashable_test: Makefile mason_packages test/hashable_test.cpp +out/hashable_test: Makefile mason_packages/headers/boost test/hashable_test.cpp mkdir -p ./out - $(CXX) -o out/hashable_test test/hashable_test.cpp -I./include -Itest/include $(RELEASE_FLAGS) $(COMMON_FLAGS) $(CXXFLAGS) $(LDFLAGS) $(BOOST_FLAGS) + $(CXX) -o out/hashable_test test/hashable_test.cpp -I./include -isystem test/include $(FINAL_CXXFLAGS) $(LDFLAGS) $(BOOST_FLAGS) bench: out/bench-variant out/unique_ptr_test out/unique_ptr_test out/recursive_wrapper_test out/binary_visitor_test ./out/bench-variant 100000 @@ -63,11 +93,11 @@ bench: out/bench-variant out/unique_ptr_test out/unique_ptr_test out/recursive_w out/unit.o: Makefile test/unit.cpp mkdir -p ./out - $(CXX) -c -o $@ test/unit.cpp -Itest/include $(DEBUG_FLAGS) $(COMMON_FLAGS) $(CXXFLAGS) + $(CXX) -c -o $@ test/unit.cpp -isystem test/include $(FINAL_CXXFLAGS) out/%.o: test/t/%.cpp Makefile $(ALL_HEADERS) mkdir -p ./out - $(CXX) -c -o $@ $< -Iinclude -Itest/include $(DEBUG_FLAGS) $(COMMON_FLAGS) $(CXXFLAGS) + $(CXX) -c -o $@ $< -Iinclude -isystem test/include $(FINAL_CXXFLAGS) out/unit: out/unit.o out/binary_visitor_1.o out/binary_visitor_2.o out/binary_visitor_3.o out/binary_visitor_4.o out/binary_visitor_5.o out/binary_visitor_6.o out/issue21.o out/issue122.o out/mutating_visitor.o out/optional.o out/recursive_wrapper.o out/sizeof.o out/unary_visitor.o out/variant.o mkdir -p ./out @@ -78,14 +108,14 @@ test: out/unit coverage: mkdir -p ./out - $(CXX) -o out/cov-test --coverage test/unit.cpp test/t/*.cpp -I./include -Itest/include $(DEBUG_FLAGS) $(COMMON_FLAGS) $(CXXFLAGS) $(LDFLAGS) + $(CXX) -o out/cov-test --coverage test/unit.cpp test/t/*.cpp -I./include -isystem test/include $(FINAL_CXXFLAGS) $(LDFLAGS) sizes: Makefile mkdir -p ./out - @$(CXX) -o ./out/our_variant_hello_world.out include/mapbox/variant.hpp -I./include $(RELEASE_FLAGS) $(COMMON_FLAGS) $(CXXFLAGS) && du -h ./out/our_variant_hello_world.out - @$(CXX) -o ./out/boost_variant_hello_world.out `$(MASON) prefix boost 1.60.0`/include/boost/variant.hpp -I./include $(RELEASE_FLAGS) $(COMMON_FLAGS) $(CXXFLAGS) $(BOOST_FLAGS) && du -h ./out/boost_variant_hello_world.out - @$(CXX) -o ./out/our_variant_hello_world ./test/our_variant_hello_world.cpp -I./include $(RELEASE_FLAGS) $(COMMON_FLAGS) $(CXXFLAGS) && du -h ./out/our_variant_hello_world - @$(CXX) -o ./out/boost_variant_hello_world ./test/boost_variant_hello_world.cpp -I./include $(RELEASE_FLAGS) $(COMMON_FLAGS) $(CXXFLAGS) $(BOOST_FLAGS) && du -h ./out/boost_variant_hello_world + @$(CXX) -o ./out/our_variant_hello_world.out include/mapbox/variant.hpp -I./include $(FINAL_CXXFLAGS) && du -h ./out/our_variant_hello_world.out + @$(CXX) -o ./out/boost_variant_hello_world.out $(BOOST_ROOT)/include/boost/variant.hpp -I./include $(FINAL_CXXFLAGS) $(BOOST_FLAGS) && du -h ./out/boost_variant_hello_world.out + @$(CXX) -o ./out/our_variant_hello_world ./test/our_variant_hello_world.cpp -I./include $(FINAL_CXXFLAGS) && du -h ./out/our_variant_hello_world + @$(CXX) -o ./out/boost_variant_hello_world ./test/boost_variant_hello_world.cpp -I./include $(FINAL_CXXFLAGS) $(BOOST_FLAGS) && du -h ./out/boost_variant_hello_world profile: out/bench-variant-debug mkdir -p profiling/ @@ -102,8 +132,8 @@ clean: rm -f *.gcda *.gcno pgo: out Makefile - $(CXX) -o out/bench-variant test/bench_variant.cpp -I./include $(RELEASE_FLAGS) $(COMMON_FLAGS) $(CXXFLAGS) $(LDFLAGS) $(BOOST_FLAGS) -pg -fprofile-generate + $(CXX) -o out/bench-variant test/bench_variant.cpp -I./include $(FINAL_CXXFLAGS) $(LDFLAGS) $(BOOST_FLAGS) -pg -fprofile-generate ./test-variant 500000 >/dev/null 2>/dev/null - $(CXX) -o out/bench-variant test/bench_variant.cpp -I./include $(RELEASE_FLAGS) $(COMMON_FLAGS) $(CXXFLAGS) $(LDFLAGS) $(BOOST_FLAGS) -fprofile-use + $(CXX) -o out/bench-variant test/bench_variant.cpp -I./include $(FINAL_CXXFLAGS) $(LDFLAGS) $(BOOST_FLAGS) -fprofile-use .PHONY: sizes test diff --git a/README.md b/README.md index 0e274b0..c230826 100644 --- a/README.md +++ b/README.md @@ -46,7 +46,7 @@ Response ret = makeRequest(); To see which type the `Response` holds you pattern match on the variant unwrapping the underlying value: ```c++ -ret.match([] (Result r) { print(r.object); } +ret.match([] (Result r) { print(r.object); }, [] (Error e) { print(e.message); }); ``` diff --git a/include/mapbox/variant.hpp b/include/mapbox/variant.hpp index fb0f77e..9b73934 100644 --- a/include/mapbox/variant.hpp +++ b/include/mapbox/variant.hpp @@ -107,11 +107,24 @@ struct direct_type<T> #if __cpp_lib_logical_traits >= 201510L +using std::conjunction; using std::disjunction; #else template <typename...> +struct conjunction : std::true_type {}; + +template <typename B1> +struct conjunction<B1> : B1 {}; + +template <typename B1, typename B2> +struct conjunction<B1, B2> : std::conditional<B1::value, B2, B1>::type {}; + +template <typename B1, typename... Bs> +struct conjunction<B1, Bs...> : std::conditional<B1::value, conjunction<Bs...>, B1>::type {}; + +template <typename...> struct disjunction : std::false_type {}; template <typename B1> @@ -595,7 +608,8 @@ public: helper_type::copy(old.type_index, &old.data, &data); } - VARIANT_INLINE variant(variant<Types...>&& old) noexcept(std::is_nothrow_move_constructible<types>::value) + VARIANT_INLINE variant(variant<Types...>&& old) + noexcept(detail::conjunction<std::is_nothrow_move_constructible<Types>...>::value) : type_index(old.type_index) { helper_type::move(old.type_index, &old.data, &data); diff --git a/package.json b/package.json new file mode 100644 index 0000000..82ea26a --- /dev/null +++ b/package.json @@ -0,0 +1,10 @@ +{ + "name": "variant", + "version": "1.3.0", + "description": "C++11/C++14 variant", + "main": "./package.json", + "repository" : { + "type" : "git", + "url" : "git://github.com/mapbox/variant.git" + } +} diff --git a/test/t/binary_visitor_impl.hpp b/test/t/binary_visitor_impl.hpp index f2db68b..4ee1f08 100644 --- a/test/t/binary_visitor_impl.hpp +++ b/test/t/binary_visitor_impl.hpp @@ -160,8 +160,8 @@ struct swap_visitor { using T = typename std::common_type<A, B>::type; T tmp = a; - a = b; - b = tmp; + a = static_cast<A>(b); + b = static_cast<B>(tmp); } }; -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-grass/mapbox-variant.git _______________________________________________ Pkg-grass-devel mailing list Pkg-grass-devel@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-grass-devel