Haskell-подобный `const` в c ++C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Haskell-подобный `const` в c ++

Сообщение Anonymous »

Я экспериментировал с решением типа функционального программирования по проблемам в C ++ 11, и время от времени я находился в ситуации, когда мне нужна функция, которая возвращает постоянное значение.

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

const :: a -> b -> a
const x = \_ -> x
< /code>
, которая возвращает функцию, которая оценивается в исходный аргумент Const, независимо от того, какой аргумент предоставлен для нее. Я хотел бы создать что -то подобное в C ++ 11. Такие конструкции полезны для обозначения особого поведения в функциях (постоянная функция истинного, отправленного фильтру, оставит данные нетронутыми). Вот моя первая попытка: < /p>
template
std::function constF(T x) {
return ([x](...) { return x; });
}
< /code>
Это компилируется самостоятельно, но любая попытка использовать его приводит к ошибкам неполного типа. Моя вторая попытка была следующая: < /p>
template
std::function constF(T x) {
return ([x](Args...) { return x; });
}
< /code>
Это приближается, но не позволяет мне предоставить какие -либо аргументы, если я явно их не укажу. < /p>
auto trueFunc1 = constF(true);
auto trueFunc2 = constF(true);
cout 

Подробнее здесь: [url]https://stackoverflow.com/questions/17890513/haskell-like-const-in-c[/url]
Ответить

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

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

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

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

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