是否有標準方法來檢查構建新的std::codecvt_byname
是否成功?如何檢查構建新的codecvt_byname是否成功
我是用下面的程序進行試驗:
// cl /nologo /Fetest_codecvt_byname.exe /EHsc test_codecvt_byname.cpp && test_codecvt_byname
// g++ -o test_codecvt_byname test_codecvt_byname.cpp && test_codecvt_byname
#include <cstdlib>
#include <iostream>
#include <locale>
#include <new>
#include <stdexcept>
int main()
{
try {
new std::codecvt_byname<wchar_t, char, mbstate_t>(".nonsense");
} catch (const std::exception& ex) {
std::cerr << "Error: " << ex.what() << std::endl;
return EXIT_FAILURE;
}
return EXIT_SUCCESS;
}
的libstdC++在Windows顯然拋出一個std::runtime_error
對象,如果指定的語言環境不支持。但是,Microsoft Visual C++的STL實現不會引發異常。
不知道哪個C++編譯器會編譯代碼,我該如何檢查新的std::codecvt_byname
的構造是否成功?或者,有沒有一種方法可以檢查在沒有內存不足的情況下構建是否會成功?