[Bug c++/84612] New: Overload resolution of operator* fails for valarray<double>
niva at niisi dot msk.ru
gcc-bugzilla@gcc.gnu.org
Wed Feb 28 10:46:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84612
Bug ID: 84612
Summary: Overload resolution of operator* fails for
valarray<double>
Product: gcc
Version: 7.3.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: niva at niisi dot msk.ru
Target Milestone: ---
Created attachment 43527
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=43527&action=edit
source file
We use gcc-7.3.0 configured with:
/home/sap/gcc-infra-build/gcc/configure --prefix=/home/sap/local-gcc-7
--enable-languages=c,c++ --with-gmp=/home/sap/gcc-infra
--with-mpfr=/home/sap/gcc-infra --with-mpc=/home/sap/gcc-infra
Compilation of the attached file max.pass.cpp
LANG=C ~/local-gcc-7/bin/g++ -std=c++11 -O0 -S max.pass.cpp
results in
max.pass.cpp: In function 'void cpp_main()':
max.pass.cpp:38:19: error: no match for 'operator*' (operand types are
'std::valarray<double>' and 'int')
assert((v1*2).max() == 8.0);
~~^~
We expected that
template<class T> valarray<T> operator* (const valarray<T>&, const T&);
is used after conversion of 2 to double.
Note that similar line of code (with *= instead of *):
assert((v1*=2).max() == 8.0);
is compiled successfully.
More information about the Gcc-bugs
mailing list