Hacker News new | ask | show | jobs
by matthavener 4842 days ago
I didn't quite "get" the point of the pointer/copy option on interfaces, but this makes it crystal clear. This works around such a common problem in writing C++ templates (which is really the only equivalent polymorphism if you want to dispatch a function on a native type):

  template <class T> void doSomething(const T &expensiveCopy);
Versus:

  template <class T> void doSomething(T cheapCopy);
As usual, boost provides another crazy template hack to work around this issue:

http://boost.sourceforge.net/libs/utility/call_traits.htm

1 comments

Can you explain why this is actually a problem? Why not just always have a const T&, is there some negative in the "cheap copy" case to not copy?
I'm making some assumptions about the compiler optimization: If T is something like "int", then passing by reference can be more costly, because a value that was once stored in a register now needs a real memory address and must be deferenced to read.