【发布时间】:2019-02-06 20:34:26
【问题描述】:
我有一个 template <class Class> 通用函数,其中包括:
std::ostringsteam objectStream;
objectStream << std::forward<Class>(object);
return objectStream.str();
为了效率,我希望优化Class字符串的大小写。
因此,我在模板上进行标签调度以重载模板函数,第 27 条是 Scott Myers 的 Effective Modern C++ book。
因此我需要在编译时生成std::true_type 或std::false_type。
给定一个template<class Class>,如果这些表达式中的任何一个为真,我需要一个std::true_type:
std::is_same<typename std::decay<Class>::type, char * >()
std::is_same<typename std::decay<Class>::type, const char * >()
std::is_same<typename std::decay<Class>::type, string >()
std::is_same<typename std::decay<Class>::type, string * >()
std::is_same<typename std::decay<Class>::type, const string * >()
我不确定如何执行 OR,以便编译器可以在编译时正确调度标签。
相关问题,有没有办法将const 放入const char * 以使其成为char *?
【问题讨论】:
标签: c++ c++11 templates overriding