小编Luc*_*ien的帖子

难以理解基于 SFINAE 的特征的通用 lambda 语法

我正在阅读一些基于 SFINAE 的特征的示例,但无法理解与 C++17 中的通用 lambda 相关的示例(isvalid.hpp)。

我可以理解它大致包含一些主要部分,以便实现类型特征,例如isDefaultConstructibleorhasFirst特征(isvalid1.cpp):

1. 使用 SFINAE 技术的辅助函数

#include <type_traits>

// helper: checking validity of f(args...) for F f and Args... args:
template<typename F, typename... Args,
         typename = decltype(std::declval<F>()(std::declval<Args&&>()...))>
std::true_type isValidImpl(void*);

// fallback if helper SFINAE'd out:
template<typename F, typename... Args>
std::false_type isValidImpl(...);
Run Code Online (Sandbox Code Playgroud)

2. 确定有效性的通用 lambda

// define a lambda that takes a lambda f and returns whether calling f with args is valid
inline constexpr …
Run Code Online (Sandbox Code Playgroud)

c++ sfinae type-traits c++17

5
推荐指数
1
解决办法
153
查看次数

标签 统计

c++ ×1

c++17 ×1

sfinae ×1

type-traits ×1