iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 25
1
Software Development

C++ 30天屠龍記系列 第 25

C++ 30天屠龍記(第25天): 用Concept限制template類型

  • 分享至 

  • xImage
  •  

前言

C++ 將在2020加入 Concept功能,用意是希望用checking限制template類型而達到更穩定的表現。

前設工作

用macOS的人請先設定gcc-9地址

export CXX=/usr/local/bin/g++-9

CMakeLists.txt

cmake_minimum_required(VERSION 3.1..3.15)

project(helloConcepts)

# Default
	# Add Library Path:

    # Add Library:
        //Choose your favourite libraries


    # Build:
        add_executable(main src/main.cpp)

    # Link Libraries:
        //Choose your favourite libraries

    # C++ Version:

        target_compile_options(main PUBLIC -std=c++2a -fconcepts)

使用

函數

以add為例子

 auto add = (auto a, auto b){ return a+b;};
 int main(){
     vector<int> a{1,2,3};
     auto b = a;
     add(a,b)
     //這樣就會報錯了

那麼我們可以怎麼做呢?

template<typename T1,typename T2>
concepts add_check = requires{
    a + b;
}
tempalte<typename T1, typename T2>
requires add_check
auto add(T1 a, T2 b)
requires add_check{
    return a + b;

這樣就可以避免古怪的模板類型問題了


上一篇
C++ 30天屠龍記(第24天): C++模板
下一篇
C++ 30天屠龍記(第25天): 一文學懂函數式編程
系列文
C++ 30天屠龍記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言