Possible Duplicate:
Can the template parameters of a constructor be explicitly specified?
following up on my previous question, (I found this situation in edit 2)
Laid out simple in code:
#include <iostream>
struct Printer
{
  Printer() { std::cout << "secret code" << std::endl; }
};
template <class A>
struct Class
{
  template <class B, class C>
  Class(B arg)
  {
      C c; /* the 'secret code' should come from here */
      std::cout << arg << std::endl;
  }
  Class(double arg) { std::cout << "double" << std::endl; }
  Class(float arg) { std::cout << "float" << std::endl; }
  /* this forbids the use of printer in the first parameter */
  Class(Printer printer) { throw std::exception(); /* here be dragons */ }
};
int main()
{
  Class<int> c(1.0f);
  Class<int>* ptr = new Class<int>((double)2.0f);
  return 0;
}
// Can anyone print 'secret code' while creating an object of type 'Class' ?
Detailed: For a template constructor, can you specify a template argument which is not part of the constructor's arguments when an object get's instantiated?
I think this deserves a question of its own.