[Bug c++/55726] assignment of a scalar to a vector
vincenzo.innocente at cern dot ch
gcc-bugzilla@gcc.gnu.org
Wed Dec 19 13:25:00 GMT 2012
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55726
--- Comment #4 from vincenzo Innocente <vincenzo.innocente at cern dot ch> 2012-12-19 13:25:16 UTC ---
I understand your concern, Marc.
I think that the compiler shall either prefer double or produce
"error: call of overloaded 'f(float&)' is ambiguous"
I'm even more worried of
void f(float32x4_t);
void f(float32x8_t);
what about some sort of c++ "explicit"?
I must say that my immediate need come from template functions
that could accept any arithmetic AND vector type
such as
template<typename Float>
inline
Float atan(Float t) {
constexpr float PIO4F = 0.7853981633974483096f;
constexpr Float zero = {0};
Float ret = ( t > 0.4142135623730950f ) ? zero+PIO4F : zero;
…
}
where at the moment I need to perform a quite "unnatural" syntactic gymnastic
to assign
a scalar to either another scalar or to a vector of unknown length.
btw I think that altivec supports the assignment of a scalar: I've never tried
myself though
vector int vi1 = (vector int)(1); // vi1 will be (1, 1, 1, 1).
vector int vi2 = (vector int){1}; // vi2 will be (1, 0, 0, 0).
vector int vi3 = (vector int)(1, 2); // error
vector int vi4 = (vector int){1, 2}; // vi4 will be (1, 2, 0, 0).
vector int vi5 = (vector int)(1, 2, 3, 4);
In any case I find all these "exercises" quite useful to try to converge to a
unique vector syntax to propose as standard
More information about the Gcc-bugs
mailing list