c++ - 是否存在绝对需要 typedef 的情况?

标签 c++ type-conversion typedef coercion safe-bool-idiom

考虑以下 safe bool idiom 的摘录:

typedef void (Testable::*bool_type)() const;
operator bool_type() const;

是否可以在没有typedef的情况下声明转换函数?以下不编译:

operator (void (Testable::*)() const)() const;

最佳答案

啊,我只记得 identity 元函数。可以写

operator typename identity<void (Testable::*)() const>::type() const;

identity的定义如下:

template <typename T>
struct identity
{
    typedef T type;
};

您可能会争辩说 identity 仍然使用 typedef,但这个解决方案对我来说已经足够“好”了。

关于c++ - 是否存在绝对需要 typedef 的情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6998750/

相关文章:

c++ - 在指针场景中使用 std::shared_ptr

c++ - switch 语句条件下同时具有模板和非模板转换运算符的类

ios - 将值从字典转换为NSNumber

java - 如何将 double 转换为对象?

c++ - 允许从 std::map 的键中窃取资源吗?

c++ - 调用 shared_ptr 对象方法

java - 使用值 [Ljava.lang.String;@......] 设置表达式 X 时出错

c - 在循环中打印字符串数组

c++ - 如何使用默认构造函数参数对模板进行类型定义

c - 别名函数的新名称 (C)