Здравствуйте, roofhasgone, Вы писали:
R>Код ниже не компилируется на Embarcadero C++ Builder XE2.
Может быть, глючит std::is_class?
(Проверь, что даёт is_class<Foo>::value)
Если да, — то решение такое: выдрать, если получится, определение из VC-шной реализации STL и вставить к себе в проект. А чтобы не подрались имена — запихнуть в пространство vcstd::
Если нет, то есть, компилятор не умеет делать SFINAE, — тогда всё гораздо хуже.
Придётся переосмыслить свой код. В частности: почему в одной сигнатуре идёт &obj,func, а в другой — func,arg? Логично было бы, чтоб функция оказывалась всегда на одном и том же месте, например, на первом.
Далее, подозреваю, что &obj,func нужно, чтобы сделать замыкание функции на объект. Как насчёт того, чтобы для этих целей использовать std::bind? Уж bind-то не глючит, надеюсь.