explicit means that your constructor will not be considered for an implicit conversion. It must be used explicitly, and since you aren't using your constructor explicitly here, the compiler cannot use it implicitly.
Yes, but you are asking the compiler to use an implicit constructor to make GStrings from "hello" and "byebye".
Usually when one refers to an implicit constructor, one refers to one implicitly generated by the compiler: not one that is not designated explicit.
A constructor declared without the function-specifierexplicit specifies a conversion from the types of its parameters to the type of its class. Such a constructor is called a converting constructor. - IS