这是确保隐式类型转换不会发生的合法方法

Adr*_*ian 4 c++ c++11

这是否是确保隐式类型转换不会发生的合法方法?

#include <string>
#include <iostream>

void func(std::string s)
{
   std::cout << "Thanks for the string\n";
}
template<class T>
void func(T)=delete;

int main()
{
   func("test1");
// str.cc: In function ‘int main()’:
// str.cc:13:16: error: use of deleted function ‘void func(T) [with T = const char*]’
//     func("test1");
//     ^
//  str.cc:9:6: error: declared here
//  void func(T)=delete;
//       ^
//
   func(std::string("test2"));
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

Edw*_*nge 8

在我看来很好.

答案也是如此.

  • @DavidRodríguez-dribeas问题是"这是一种合法的方法......"而这个答案是"是的",这是一个非常有效的答案. (3认同)
  • 这应该是一个评论. (2认同)
  • @cdhowie:你是对的,我不知道我是怎么误读这个问题:)(出于某种原因我认为问题是*你怎么能阻止隐含的转换*) (2认同)