Compiler cannot perform small-object and other optimizations in algorithms.cpp . This is solved by providing the trailing return type and passing the lambda through one of its arguments.
Fixes#150
Co-authored-by: Neel Shah <neelshah29042002.com>
Unit tests have been revamped in order to improve maintainability and readability.
Many of them have been split into smaller tests.
Missing tests for various tensor types and extents have been added.
This will simply the addition of new tests for various tensor types
and instances.
Auxiliary functions for extents and strides were using different
functions. Additionally, many tags were used to distinguish between
different tensor types. This patch simplifies interfaces of different
core functions and unifies functions that can process different types of
extent and stride types.
* [skip ci] Add "cxxstd" json field. The "cxxstd" json field is being added to each Boost library's meta json information for libraries in order to specify the minumum C++ standard compilation level. The value of this field matches one of the values for 'cxxstd' in Boost.Build. The purpose of doing this is to provide information for the Boost website documentation for each library which will specify the minimum C++ standard compilation that an end-user must employ in order to use the particular library. This will aid end-users who want to know if they can successfully use a Boost library based on their C++ compiler's compilation level, without having to search the library's documentation to find this out.
* Updated the minimum C++ standard requirement to C++11 based on the Ublas Wiki section mentioning C++11 as a prerequisite.
* improving the tensor design using tensor engine to support any configuration
* fixing and refactoring extents and strides
* making extents and strides class declarations contestants
* syncing with develop branch
* fixing examples
* fixing type aliasing bug
* fixing clang-tidy errors
* adding move assignment operator
* fixing clang-tidy errors
* fixing clang-tidy errors
* Fix all clang-tidy warnings & Improve Review action (#92)
* Fix all clang-tidy warnings
* Update clangtidy_check.yml
* Do not run review for PR from forks
In order to run review from forks we need to create a Github bot that has full access to all forks and can perform review even from forks.
* Update clangtidy_review.yml
* Update clangtidy_review.yml
* improving the tensor design using tensor engine to support any configuration
* fixing and refactoring extents and strides
* making extents and strides class declarations contestants
* fixing examples
* fixing type aliasing bug
* fixing clang-tidy errors
* adding move assignment operator
* fixing clang-tidy errors
* fixing clang-tidy errors
* Fix all clang-tidy warnings & Improve Review action (#92)
* Fix all clang-tidy warnings
* Update clangtidy_check.yml
* Do not run review for PR from forks
In order to run review from forks we need to create a Github bot that has full access to all forks and can perform review even from forks.
* Update clangtidy_review.yml
* Update clangtidy_review.yml
* changing tensor engine APIs
* adding std::enable_if to tensor_core to remove redundant parameter for static_tensor
* fixing template name
* removing first_order and last_order form namespace ublas and moving to ublas::layout
* removing always_false
* improving strides construction for dynamic and fixed_rank
* refactoring code
* refactoring code and adding static checks
* Moving tensor_engine to it's own header file and removing static_product
* adding checking and fixing expression
* refactoring code
* refactoring static_extents_traits.hpp
* fixing static_assert in strides.hpp and adding inline and constexpr to the functions
* adding fixed rank example and making trans second argument template type
* removing rebind_storage and adding rebind_storage_size for static products
* refactoring directory and moving static_extents_traits.hpp into extents_functions.hpp with function implementation
* fixing github action
* fixing msvc compiler bug
* refactoring make_static_strides code
* fixing: removing push_front and push_back in static_strides.hpp
* fix for msvc 14.27, it is unable to treat basic_static_extents::at constexpr
* changing name from valid to is_valid for naming consistency
* moving extents_result_type_* functions inside the respective prod functions
* fixing broken license
* removing the unnecessary headers
* improving error and fixing error messages
Co-authored-by: Ashar <coder3101@users.noreply.github.com>
std::iterator was deprecated in C++17 and removed in C++20. I replaced the inheritance with the 5 equivalent typedefs, even though they're not all used by ublas, for compatibility in case clients depend on them.
Outside repositories do not have permission to post review comments on ublas repository. It fails to review and CI fails. This issue has been fixed. Reviews are only run if a PR originates from our the ublas repository.
Branch coverage needs to be explicitly enabled and is not the defaault configuration of lcov. It is better to disable branch coverage because then we will have only 2 things for each line in coverage report. Either a line is hit or a miss. This is even the defaault behaviour of llvm-cov for coverage reporting. For reference check [this](https://codecov.io/gh/tzlaine/text/tree/master/boost/text) Zach's Library for Unicode which recently got partially approved for Boost. This library also uses default coverage settings.
**After this commit coverage will be 95%**
* GSoC Phase 1: Enhance CI workflows and switch to Github Actions
More details of the work of this phase could be checked at my wiki https://github.com/BoostGSoC20/ublas/wiki
* Tensor tests use Github Actions
Old uBLAS will only use Travis and Appveyor from old legacy CI while
Tensor is now build using modern Github Action on wide array of compiler
and standards and codes.
* Add Copyright notice and refactor windows matrix
std::allocator<T>::construct/destroy were deprecated in C++17 and removed in C++20, in favor of std::allocator_traits<T>::construct/destroy. (https://en.cppreference.com/w/cpp/memory/allocator_traits/construct). They are gone in gcc10. This fix switches to the the latter for C++17 and greater.
* decomposing tensor class into seperate modules according to the extents type
* stabilizing and updating test. Adding support for the operations b/w different types of tensor
* updating examples
* changing tabs to spaces
* added constexpr, removed resize from tensor and changed the array_type to container_type
* changing tag names and refactoring code
* adding and updating examples
* adding new line at the end of file
* refactoring code, fixing bugs and adding few new examples
* refactoring examples
* fixing gcc-7 issue where it is unable to use deduction guide when initilized
* adding constexpr and inline
* adding noexcept
* adding is_static_rank_v
* removing extents.hpp and decoupling test_extents and test_strides
* refactoring code and adding constexpr with [[nodiscard]] to the functions
* refactoring code.
* adding missing iterator header
* changing helper function name
fix macro for MSVC
adding noexcept
fixing test and making changes
adding comparison test and adding resolving issue
changing extents API
fixing MSVC errors
fixing MSVC error
adding static prod function and adding std::array to static extents and static strides
fixing get_number_list
refactoring meta_function into type_traits and adding staic_traits for static_extents
fixing extents_result_type_outer_prod and combining static_functions and functions
removing unnecessary code and header file
removing unnecessary forward declaration
private member resize and adding removed constructors for matrix and vector
changing size_t to std::size_t and fixing stride_t
adding is_resizable type trait for tensor resizing
improve documenting of is_resizable
refactoring code
changing msvc version in .yml
changing toolset msvc-14.1 to msvc-14.16 and adding VSCLCOMPILER
changing toolset msvc-14.2 and image to VS 2019
refactoring code and adding new matrix to appveyor
adding VS 2019 with msvc-14.1 and disabling VS 2019 with msvc-14.2 and c++2a
adding VS 2019 with msvc-14.2 and changing flag to latest
removing VS 2019 with msvc-14.2 and c++17 and adding timeout to travis.yml
travis_wait workaround
removing VS 2017 from appveyor and refactoring code
adding clang support for c++17 and c++20 and refactoring code
changing dist to bionic and adding source link to clang 10
fixing travis, bugs and adding new examples
fixing example bugs for msvc
updating licence and adding test_expression to jamfile
adding new tests, refactoring code and fixing bugs
fix for msvc c++20
fixing memory problem due to BOOST_AUTO_TEST_SUITE macro defining after fixture
removing const from tests and enabling test_tensor.cpp
removing const from test_fixed_rank_expression_evaluation.cpp
fixing msvc bug
fixing msvc-14.2 bug for c++ latest where it cannot properly capture variables in lambda func
disintegrating tests into smaller units
reducing test_types for testing
reducing tests
reducing test_types for testing in operator arithmetic
improving msvc warinings and separating test_function.cpp into it's own module
Recently due to some changes to vcpkg the CI was failing to work with VS2017 using cached vcpkg. This is however fixed if we update the vcpkg. To prevent this from happening in future I am adding the upgrade to vcpkg as a pre-step for building our code.