Anteru's blog
  • Consulting
  • Research
    • Assisted environment probe placement
    • Assisted texture assignment
    • Edge-Friend: Fast and Deterministic Catmull-Clark Subdivision Surfaces
    • Error Metrics for Smart Image Refinement
    • High-Quality Shadows for Streaming Terrain Rendering
    • Hybrid Sample-based Surface Rendering
    • Interactive rendering of Giga-Particle Fluid Simulations
    • Quantitative Analysis of Voxel Raytracing Acceleration Structures
    • Real-time Hybrid Hair Rendering
    • Real-Time Procedural Generation with GPU Work Graphs
    • Scalable rendering for very large meshes
    • Spatiotemporal Variance-Guided Filtering for Motion Blur
    • Subpixel Reconstruction Antialiasing
    • Tiled light trees
    • Towards Practical Meshlet Compression
  • About
  • Archive

C++ tricks, #4: Binding to overloaded member functions

May 17, 2007
  • Programming
approximately 1 minutes to read

Anyone who is developing with C++ knows the joys of member functions and pointers to member functions (you know, those SomeLongType (ClassName::*)(Param)-typed beasts). Today, I had a problem, I needed to bind (using Boost.Bind) to an overloaded member function, and to make things interesting it was const as well. The problem is with just a plain &Class::functionName (i.e., boost::bind (&Class::fun, &instance, _1, ...)), it cannot resolve which function you mean (giving you usually pages of compiler output). The deal is, how to disambiguate, and the solution is of course cast to your type. This leads to something like

boost::bind (static_cast<int (ClassName::*)(const Param& p1) const> (&ClassName::Function), &instance, _1)

Hope this helps somebody as it took me quite some time to figure this out.

Previous post
Next post

Recent posts

  • Data formats: Why CSV and JSON aren't the best
    Posted on 2024-12-29
  • Replacing cron with systemd-timers
    Posted on 2024-04-21
  • Open Source Maintenance
    Posted on 2024-04-02
  • Angular, Caddy, Gunicorn and Django
    Posted on 2023-10-21
  • Effective meetings
    Posted on 2022-09-12
  • Older posts

Find me on the web

  • GitHub
  • GPU database
  • Projects

Follow me

Anteru NIV_Anteru
Contents © 2005-2025
Anteru
Imprint/Impressum
Privacy policy/Datenschutz
Made with Liara
Last updated February 03, 2019