Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: mockingbirdnest/Principia
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 4348aeeb8350
Choose a base ref
...
head repository: mockingbirdnest/Principia
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: 0a77818c2a22
Choose a head ref
  • 2 commits
  • 1 file changed
  • 1 contributor

Commits on Aug 30, 2020

  1. This time, Clang is wrong.

    pleroy committed Aug 30, 2020
    Copy the full SHA
    e99b9b3 View commit details
  2. Merge pull request #2700 from pleroy/Clang

    Clang doesn't implement CWG 150/P0522R0
    pleroy authored Aug 30, 2020
    Copy the full SHA
    0a77818 View commit details
Showing with 16 additions and 4 deletions.
  1. +16 −4 geometry/cartesian_product_body.hpp
20 changes: 16 additions & 4 deletions geometry/cartesian_product_body.hpp
Original file line number Diff line number Diff line change
@@ -221,8 +221,14 @@ Tail(Tuple const& tuple) -> Type {
// the bona fide |CartesianProductVectorSpace|. If it is not, this implements a
// multiplication-like operation which has the expected properties with respect
// to the cartesian product additive group.
// NOTE(phl): The need for the third, defaulted, parameter to the template
// template parameter is because Clang, as of 10.0.1, doesn't implement
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0522r0.html, see
// https://godbolt.org/z/9T8M3P. Visual Studio 16.6.3 does.
template<typename LTuple, typename RTuple,
template<typename, typename> class CartesianProductMultiplicativeSpace,
template<typename, typename Tuple,
typename = std::make_index_sequence<std::tuple_size_v<Tuple>>>
class CartesianProductMultiplicativeSpace,
int lsize_ = std::tuple_size_v<LTuple>,
int rsize_ = std::tuple_size_v<RTuple>>
class PolynomialRing {
@@ -262,7 +268,9 @@ class PolynomialRing {
};

template<typename LTuple, typename RTuple,
template<typename, typename> class CartesianProductMultiplicativeSpace,
template<typename, typename Tuple,
typename = std::make_index_sequence<std::tuple_size_v<Tuple>>>
class CartesianProductMultiplicativeSpace,
int lsize_>
class PolynomialRing<LTuple, RTuple,
CartesianProductMultiplicativeSpace,
@@ -279,7 +287,9 @@ class PolynomialRing<LTuple, RTuple,
};

template<typename LTuple, typename RTuple,
template<typename, typename> class CartesianProductMultiplicativeSpace,
template<typename, typename Tuple,
typename = std::make_index_sequence<std::tuple_size_v<Tuple>>>
class CartesianProductMultiplicativeSpace,
int lsize_, int rsize_>
constexpr auto PolynomialRing<LTuple, RTuple,
CartesianProductMultiplicativeSpace,
@@ -307,7 +317,9 @@ constexpr auto PolynomialRing<LTuple, RTuple,
}

template<typename LTuple, typename RTuple,
template<typename, typename> class CartesianProductMultiplicativeSpace,
template<typename, typename Tuple,
typename = std::make_index_sequence<std::tuple_size_v<Tuple>>>
class CartesianProductMultiplicativeSpace,
int lsize_>
constexpr auto PolynomialRing<LTuple, RTuple,
CartesianProductMultiplicativeSpace,