Передача шаблонной дружественной функции класса в другую функцию в качестве параметра приводит к ошибкеC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Передача шаблонной дружественной функции класса в другую функцию в качестве параметра приводит к ошибке

Сообщение Anonymous »

Следующий код демонстрирует проблему.

Код: Выделить всё

#include 

namespace test {

template 
class A {
public:
friend auto foo(const A& obj) { return 1; }
};

template 
void bar(Function f, Args&&... args) {
const auto result = std::invoke(f, std::forward(args)...);
// do stuff with result
}

}  // namespace test

auto main() -> int {
test::A value;
test::bar(foo, value);  // results in compile time error
test::bar(test::foo, value);  // results in compile time error
return 0;
}
Вот ссылка на проводник компилятора.
Вероятно, он должен что-то делать с поиском, зависящим от аргументов, но я не могу этого понять.>

Подробнее здесь: https://stackoverflow.com/questions/726 ... meter-resu
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»