[lld] r248873 - Remove `explicit` from constructors that take more than one parameter.
Aaron Ballman via llvm-commits
llvm-commits at lists.llvm.org
Tue Sep 29 19:20:20 PDT 2015
On Tue, Sep 29, 2015 at 10:06 PM, Rui Ueyama via llvm-commits
<llvm-commits at lists.llvm.org> wrote:
> Author: ruiu
> Date: Tue Sep 29 21:06:17 2015
> New Revision: 248873
>
> URL: http://llvm.org/viewvc/llvm-project?rev=248873&view=rev
> Log:
> Remove `explicit` from constructors that take more than one parameter.
Why? This still has effect for braced initialization, for instance.
struct S {
explicit S(int, float) {}
};
S foo() {
return { 1, 2 }; // ill-formed because of the explicit constructor
}
int main() {
S s = foo();
}
~Aaron
>
> Modified:
> lld/trunk/ELF/InputFiles.h
> lld/trunk/ELF/Symbols.h
>
> Modified: lld/trunk/ELF/InputFiles.h
> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/InputFiles.h?rev=248873&r1=248872&r2=248873&view=diff
> ==============================================================================
> --- lld/trunk/ELF/InputFiles.h (original)
> +++ lld/trunk/ELF/InputFiles.h Tue Sep 29 21:06:17 2015
> @@ -41,7 +41,7 @@ public:
> StringRef getName() const { return MB.getBufferIdentifier(); }
>
> protected:
> - explicit InputFile(Kind K, MemoryBufferRef M) : MB(M), FileKind(K) {}
> + InputFile(Kind K, MemoryBufferRef M) : MB(M), FileKind(K) {}
> MemoryBufferRef MB;
>
> private:
> @@ -52,7 +52,7 @@ enum ELFKind { ELF32LEKind, ELF32BEKind,
>
> class ELFFileBase : public InputFile {
> public:
> - explicit ELFFileBase(Kind K, ELFKind EKind, MemoryBufferRef M)
> + ELFFileBase(Kind K, ELFKind EKind, MemoryBufferRef M)
> : InputFile(K, M), EKind(EKind) {}
> static bool classof(const InputFile *F) {
> Kind K = F->kind();
> @@ -71,7 +71,7 @@ protected:
> // .o file.
> class ObjectFileBase : public ELFFileBase {
> public:
> - explicit ObjectFileBase(ELFKind EKind, MemoryBufferRef M)
> + ObjectFileBase(ELFKind EKind, MemoryBufferRef M)
> : ELFFileBase(ObjectKind, EKind, M) {}
> static bool classof(const InputFile *F) { return F->kind() == ObjectKind; }
>
> @@ -185,7 +185,7 @@ private:
> // .so file.
> class SharedFileBase : public ELFFileBase {
> public:
> - explicit SharedFileBase(ELFKind EKind, MemoryBufferRef M)
> + SharedFileBase(ELFKind EKind, MemoryBufferRef M)
> : ELFFileBase(SharedKind, EKind, M) {}
> static bool classof(const InputFile *F) { return F->kind() == SharedKind; }
> };
>
> Modified: lld/trunk/ELF/Symbols.h
> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Symbols.h?rev=248873&r1=248872&r2=248873&view=diff
> ==============================================================================
> --- lld/trunk/ELF/Symbols.h (original)
> +++ lld/trunk/ELF/Symbols.h Tue Sep 29 21:06:17 2015
> @@ -149,7 +149,7 @@ protected:
> typedef typename Base::Elf_Sym Elf_Sym;
>
> public:
> - explicit Defined(Kind K, StringRef N, const Elf_Sym &Sym)
> + Defined(Kind K, StringRef N, const Elf_Sym &Sym)
> : ELFSymbolBody<ELFT>(K, N, Sym) {}
>
> static bool classof(const SymbolBody *S) { return S->isDefined(); }
> @@ -162,7 +162,7 @@ template <class ELFT> class DefinedAbsol
> public:
> static Elf_Sym IgnoreUndef;
>
> - explicit DefinedAbsolute(StringRef N, const Elf_Sym &Sym)
> + DefinedAbsolute(StringRef N, const Elf_Sym &Sym)
> : Defined<ELFT>(Base::DefinedAbsoluteKind, N, Sym) {}
>
> static bool classof(const SymbolBody *S) {
> @@ -180,7 +180,7 @@ template <class ELFT> class DefinedCommo
> public:
> typedef typename std::conditional<ELFT::Is64Bits, uint64_t, uint32_t>::type
> uintX_t;
> - explicit DefinedCommon(StringRef N, const Elf_Sym &Sym)
> + DefinedCommon(StringRef N, const Elf_Sym &Sym)
> : Defined<ELFT>(Base::DefinedCommonKind, N, Sym) {
> MaxAlignment = Sym.st_value;
> }
> @@ -203,8 +203,7 @@ template <class ELFT> class DefinedRegul
> typedef typename Base::Elf_Sym Elf_Sym;
>
> public:
> - explicit DefinedRegular(StringRef N, const Elf_Sym &Sym,
> - InputSection<ELFT> &Section)
> + DefinedRegular(StringRef N, const Elf_Sym &Sym, InputSection<ELFT> &Section)
> : Defined<ELFT>(Base::DefinedRegularKind, N, Sym), Section(Section) {}
>
> static bool classof(const SymbolBody *S) {
> @@ -219,8 +218,8 @@ template <class ELFT> class DefinedSynth
>
> public:
> typedef typename Base::Elf_Sym Elf_Sym;
> - explicit DefinedSynthetic(StringRef N, const Elf_Sym &Sym,
> - OutputSection<ELFT> &Section)
> + DefinedSynthetic(StringRef N, const Elf_Sym &Sym,
> + OutputSection<ELFT> &Section)
> : Defined<ELFT>(Base::DefinedSyntheticKind, N, Sym), Section(Section) {}
>
> static bool classof(const SymbolBody *S) {
> @@ -238,7 +237,7 @@ template <class ELFT> class Undefined :
> public:
> static Elf_Sym Synthetic;
>
> - explicit Undefined(StringRef N, const Elf_Sym &Sym)
> + Undefined(StringRef N, const Elf_Sym &Sym)
> : ELFSymbolBody<ELFT>(Base::UndefinedKind, N, Sym) {}
>
> static bool classof(const SymbolBody *S) {
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list