指向重载强制转换操作符的指针
Pointer to overloaded casting operator?
假设我有以下类:
class MyStringClass
{
public:
operator const char*() const;
};
如果可能的话,我如何创建一个函数指针到这个重载的强制转换操作符?
基本上,我想使用boost::phoenix来调用这个操作符。我假设我需要绑定到它(因此我需要创建一个指向它的函数指针),但是如果boost::phoenix已经内置了以特殊方式调用它的功能,我也愿意这样做。
我使用的是Visual Studio 2008, c++ 03.
const char* (MyStringClass::*ptr)() const = &MyStringClass::operator const char*;
直接使用phx::static_cast_
: Live On Coliru
int main()
{
auto implicit_conversion = phx::static_cast_<const char*>(arg1);
std::vector<MyStringClass> v(10);
std::for_each(v.begin(), v.end(), implicit_conversion);
}
Live On Coliru
namespace detail
{
template <typename T>
struct my_cast
{
template <typename U> struct result { typedef T type; };
template <typename U>
T operator()(U v) const {
return static_cast<T>(v);
}
};
}
namespace phx = boost::phoenix;
using namespace phx::arg_names;
int main()
{
phx::function<detail::my_cast<const char*>> to_csz;
std::vector<MyStringClass> v(10);
std::for_each(v.begin(), v.end(), to_csz(arg1));
}
相关文章:
- 我可以将C 17 Capture lambda ConstexPR转换操作符的结果用作函数指针模板非类型参数吗?
- c++中指针操作符的列表
- 如何保存指针重定义操作符
- 我可以对指针使用操作符==吗?
- 从指针访问[]操作符
- 当操作符delete()在汇编中删除vptr指针时
- 在操作符[]前解引用成员指针
- 通过操作符[]在map中插入指针类型的值总是NULL
- 返回指向类定义的结构体的指针,多个作用域操作符
- c++用户定义的文字操作符可以传递空指针吗?
- 指针上的操作符=可能导致mac上的分段错误
- c++的new操作符保证返回的指针不会改变它的值吗?
- 使用delete操作符删除void指针
- 有没有一种方法可以通过函数指针来调用操作符函数?
- c++操作符重载以指针类型作为参数
- 与智能指针相关的c++移动语义与复制构造函数和赋值操作符
- New和delete操作符不影响指向该类的指针的Deque的内容
- c++操作符,用于a = b .* C,并将指向a、b和C对象的指针作为输入
- 涉及数组指针时delete[]操作符的问题
- 指针、数组和新的操作符