fork(1) download
  1. #include <iostream>
  2.  
  3. namespace Implementation
  4. {
  5. using Preferred = int;
  6. using Fallback = char;
  7.  
  8. template <std::size_t Size>
  9. void String(Preferred, const char (&string)[Size])
  10. {
  11. std::cout << "Constant string" << std::endl;
  12. }
  13.  
  14. void String(Fallback, const char* string)
  15. {
  16. std::cout << "Non-constant string" << std::endl;
  17. }
  18. }
  19.  
  20. template <typename T>
  21. void String(const T& string)
  22. {
  23. Implementation::String(0, string);
  24. }
  25.  
  26. int main(int argc, char* argv[])
  27. {
  28. String("Test"); // Detects constant string
  29. String(argv[0]); // Detects non-constant string
  30. }
Success #stdin #stdout 0s 3456KB
stdin
Standard input is empty
stdout
Constant string
Non-constant string