Use std::variant instead of boost::variant
Created by: wangkuiyi
It seems that the difference between std::variant and boost::variant https://stackoverflow.com/a/40204093/724872 shouldn't affect our code.
If we can do so, It seems that we don't have to rely on boost.