[LLVMdev] Question about "const"

James Molloy james.molloy at arm.com
Thu Feb 16 01:49:32 PST 2012


I think Chris recently did this with ArrayRef - that might be a good
template to base your solution on?



-----Original Message-----
From: llvmdev-bounces at cs.uiuc.edu [mailto:llvmdev-bounces at cs.uiuc.edu] On
Behalf Of Stepan Dyatkovskiy
Sent: 16 February 2012 06:36
To: llvmdev at cs.uiuc.edu
Subject: [LLVMdev] Question about "const"

Hi all. I have a next problem. I need to implement some object that will
work with both const and "constless" object: Instruction* and const
Instruction*, for example.
How to implement it better?
Currently I see two possible ways:

1. Templates.
template <class InstructionTy>
class InstructionProcessorT {
  InstructionTy *Inst;
  InstructionProcessor(InstructionTy *I) : Inst(I) {}
typedef InstructionProcessorT<Instruction> InstructionProcessor;
typedef InstructionProcessorT<const Instruction> ConstInstructionProcessor;

2. Unions.
class InstructionProcessor {
  union {
    const Instruction *ConstInst;
    Instruction *Inst;
  InstructionProcessor(Instruction *I) : Inst(I) {}
  InstructionProcessor(const Instruction *I) : ConstInst(I) {}
  void someMethod(); // Will work with Inst.
  void someMethod() const; // Will work with ConstInst.

Any suggestions?

LLVM Developers mailing list
LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu

More information about the llvm-dev mailing list