From d7163287bf742ea13ba9dfa6aac9d332a95c7676 Mon Sep 17 00:00:00 2001 From: Daniel Arndt Date: Mon, 30 Jan 2017 14:39:19 +0100 Subject: [PATCH] Document why the change was necessary --- include/deal.II/base/symmetric_tensor.h | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/include/deal.II/base/symmetric_tensor.h b/include/deal.II/base/symmetric_tensor.h index 65b8626f0a..73cde3aa4f 100644 --- a/include/deal.II/base/symmetric_tensor.h +++ b/include/deal.II/base/symmetric_tensor.h @@ -2916,6 +2916,13 @@ operator * (const SymmetricTensor &t, // (as well as with switched arguments and double<->float). typedef typename ProductType::type product_type; SymmetricTensor tt(t); + // we used to shorten the following by 'tt *= product_type(factor);' + // which requires that a converting constructor + // 'product_type::product_type(const OtherNumber) is defined. + // however, a user-defined constructor is not allowed for aggregates, + // e.g. VectorizedArray. therefore, we work around this issue using a + // copy-assignment operator 'product_type::operator=(const OtherNumber)' + // which we assume to be defined. product_type new_factor; new_factor = factor; tt *= new_factor; -- 2.39.5