我现在需要对矩阵进行操作,这些操作的过程都是类似的,只是其中的一个算子不同。这些算子有些是对每个元素操作,有些是对相邻之间的进行操作,我尝试用以下的方法去把算子和步骤分离开来,但是问题是对于参数个数不同的情况怎么处理?能不能编译时就确定好该调用的函数?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
|
天蓬老师2017-04-17 15:02:27
우연히 비슷한 행렬 라이브러리를 만들었습니다https://github.com/codehz/mat...
나도 비슷한 문제에 직면했지만 전자와 후자는 필요하지 않지만 매개변수의 단순한 차이
제가 취한 해결책은 다음과 같습니다. 콜백 함수의 매개변수 목록을 통해 자동으로 결정 - 다음과 같이 단순화
여기서 function_traits
코드는 컴파일 중에 함수 관련 정보를 얻는 데 사용됩니다. if constexpr
은 C 17의 기능입니다. constexpr
을 제거한 후 컴파일이 실패할 수 있습니다. std::enable_if
를 사용하여 해결하세요.
黄舟2017-04-17 15:02:27
코드를 보면 해결 방법이 많이 있습니다.
f2의 b는 쉽게 얻을 수 있으므로 executor(std::bind(f2, _1, 2), m);
또는
다른 값인 경우 std::enable_if를 사용하여 실행기의 오버로드를 작성할 수 있습니다. 원칙은 SFINAE 원칙을 사용하는 것입니다.