Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Kitware
GitHub Repository: Kitware/CMake
Path: blob/master/Utilities/ClangTidyModule/Tests/cmake-use-cmstrlen.cxx
3153 views
#include <cstring>

template <size_t N>
constexpr size_t cmStrLen(char const (& /*str*/)[N])
{
  return N - 1;
}

namespace ns1 {
using std::strlen;
}

namespace ns2 {
std::size_t strlen(char const* str)
{
  return std::strlen(str);
}
}

int main()
{
  // String variable used for calling strlen() on a variable
  auto s0 = "howdy";

  // Correction needed
  (void)strlen("Hello");
  (void)::strlen("Goodbye");
  (void)std::strlen("Hola");
  (void)ns1::strlen("Bonjour");
  (void)(sizeof("Hallo") - 1);
  (void)(4 + sizeof("Hallo") - 1);
  (void)(sizeof "Hallo" - 1);
  (void)(4 + sizeof "Hallo" - 1);

  // No correction needed
  (void)ns2::strlen("Salve");
  (void)cmStrLen("Konnichiwa");
  (void)strlen(s0);
  (void)(sizeof("Hallo") - 2);

  return 0;
}