Re: Initializer List Ctor

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 5 September 2017 at 14:06, Julius Witte wrote:
> In a class such as this one:
>
> #include <initializer_list>
> class A
> {
> public:
>   A(int i, double d){}
>   A(std::initializer_list<double> l){}
> };
>
> why an instantiation with curly braces as this one
>
> int main()
> {
>   A a{2,2.} ;
> }
>
> shall default to the initializer list constructor?

Because that's what the C++ standard says must happen. GCC just
follows the standard.


> I understand why a call like "A a{2.,2.}" would default to it,
>
> but in my eyes it would make more sense to default
>
> to the first constructor when the types match it exactly.

The rule is that a non-empty braced-init-list will prefer an
initializer-list constructor if it's viable. {2, 2.} can be converted
to std::initializer_list<double> so that's what happens.



[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux